sync with driver
(addition of functions raw1394_arm_get_buf raw1394_arm_set_buf to get and set buffers of mapped address ranges) git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@137 53a565d1-3bb7-0310-b661-cf11e63c67ab
This commit is contained in:
parent
30030e14aa
commit
ff891d604b
62
src/arm.c
62
src/arm.c
|
@ -91,3 +91,65 @@ int raw1394_arm_unregister (struct raw1394_handle *handle, nodeaddr_t start)
|
|||
retval = write(handle->fd, &req, sizeof(req));
|
||||
return (retval == sizeof(req)) ? 0:-1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* AdressRangeMapping SET BUFFER:
|
||||
* start, length .... identifies addressrange
|
||||
* buf .............. pointer to buffer
|
||||
*
|
||||
* This function copies 'length' bytes from user memory area 'buf'
|
||||
* to one ARM block in kernel memory area
|
||||
* with start offset 'start'.
|
||||
*
|
||||
* returnvalue: 0 ... success
|
||||
* <0 ... failure, and errno - error code
|
||||
*/
|
||||
int raw1394_arm_set_buf (struct raw1394_handle *handle, nodeaddr_t start,
|
||||
size_t length, void *buf)
|
||||
{
|
||||
struct raw1394_request req;
|
||||
int status;
|
||||
|
||||
CLEAR_REQ(&req);
|
||||
|
||||
req.type = RAW1394_REQ_ARM_SET_BUF;
|
||||
req.sendb = ptr2int(buf);
|
||||
req.length = length;
|
||||
req.address = start;
|
||||
|
||||
if (write(handle->fd, &req, sizeof(req)) < 0) return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* AdressRangeMapping GET BUFFER:
|
||||
* start, length .... identifies addressrange
|
||||
* buf .............. pointer to buffer
|
||||
*
|
||||
* This function copies 'length' bytes from one
|
||||
* ARM block in kernel memory area with start offset `start`
|
||||
* to user memory area 'buf'
|
||||
*
|
||||
* returnvalue: 0 ... success
|
||||
* <0 ... failure, and errno - error code
|
||||
*/
|
||||
int raw1394_arm_get_buf (struct raw1394_handle *handle, nodeaddr_t start,
|
||||
size_t length, void *buf)
|
||||
{
|
||||
struct raw1394_request req;
|
||||
int status;
|
||||
|
||||
CLEAR_REQ(&req);
|
||||
|
||||
req.type = RAW1394_REQ_ARM_GET_BUF;
|
||||
req.recvb = ptr2int(buf);
|
||||
req.length = length;
|
||||
req.address = start;
|
||||
|
||||
if (write(handle->fd, &req, sizeof(req)) < 0) return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
|
||||
#define RAW1394_REQ_ARM_REGISTER 300
|
||||
#define RAW1394_REQ_ARM_UNREGISTER 301
|
||||
#define RAW1394_REQ_ARM_SET_BUF 302
|
||||
#define RAW1394_REQ_ARM_GET_BUF 303
|
||||
|
||||
#define RAW1394_REQ_RESET_NOTIFY 400
|
||||
|
||||
|
|
|
@ -377,6 +377,36 @@ int raw1394_arm_register(struct raw1394_handle *handle, nodeaddr_t start,
|
|||
*/
|
||||
int raw1394_arm_unregister(raw1394handle_t handle, nodeaddr_t start);
|
||||
|
||||
/*
|
||||
* AdressRangeMapping SET BUFFER:
|
||||
* start, length .... identifies addressrange
|
||||
* buf .............. pointer to buffer
|
||||
*
|
||||
* This function copies 'length' bytes from user memory area 'buf'
|
||||
* to one ARM block in kernel memory area
|
||||
* with start offset 'start'.
|
||||
*
|
||||
* returnvalue: 0 ... success
|
||||
* <0 ... failure, and errno - error code
|
||||
*/
|
||||
int raw1394_arm_set_buf (struct raw1394_handle *handle, nodeaddr_t start,
|
||||
size_t length, void *buf);
|
||||
|
||||
/*
|
||||
* AdressRangeMapping GET BUFFER:
|
||||
* start, length .... identifies addressrange
|
||||
* buf .............. pointer to buffer
|
||||
*
|
||||
* This function copies 'length' bytes from one
|
||||
* ARM block in kernel memory area with start offset `start`
|
||||
* to user memory area 'buf'
|
||||
*
|
||||
* returnvalue: 0 ... success
|
||||
* <0 ... failure, and errno - error code
|
||||
*/
|
||||
int raw1394_arm_get_buf (struct raw1394_handle *handle, nodeaddr_t start,
|
||||
size_t length, void *buf);
|
||||
|
||||
/*
|
||||
* send an echo request to the driver. the driver then send back the
|
||||
* same request. raw1394_loop_iterate will return data as return value,
|
||||
|
|
Reference in New Issue