Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

dd_driver(3) [debian man page]

dd_driver(3)							    globus xio							      dd_driver(3)

NAME
dd_driver - Data descriptors globus_xio uses data descriptors to associate meta data with the data being writen or the data read. Data descriptors flow into the drivers read and write interface functions by way of the operation structure. If the driver is interested in viewing the data decriptor it can request it from the operation structure via a call to globus_xio_driver_operation_get_data_descriptor() and it can view any driver specific data descriptor via a call to globus_xio_driver_data_descriptor_get_specific(). The driver can modify values in the data descriptor by setting values before passing the request down the stack. Several functions are available to modify the data descriptors. There is no need to 'set()' the data descriptors back into the operation. The functions for manipluating the values in a DD affect the values xio has directly. Data descriptors flow back to the driver in the callbacks for the data operations. When calling finished operation on a data operation the driver must pass in a data descriptor. It should get this data descriptor from the io operation callback. Life Cycle: Passing in a data descriptor: A data descriptor is first created by the globus_xio user. The user can add driver specific data descriptors to it. Once the usre has created and set the attributes on its data descriptor to their liking they pass it into a globus_xio data operation (either read or write). When the data descriptor is passed on globus_xio will make an internal copy of it. It does this by first coping the user the level data descriptor and then walkinging through the list of driver specific data descriptor contianed in to and requesting the the driver make a copy of the driver specific data descriptor. If ever a driver specific data descriptor is NULL globus_xio need not call into its drivers dd_copy function. If ever the user level data descriptor is NULL globus_xio need not deal with the data descriptor functionality at all. A data descriptor coming back up the stack Once an io operation reachs the transport driver (the bottom of the stack) it takes on a slightly different role. On the way in it is describing what is requested to be done with the data, on the way out it is describing what has actually been done. Once the transport driver performs the operation it should adjust the data descriptor to reflect what has actually happened (few drivers will need to worry about this). Each driver on the way up can adjust the data descriptor and its driver specific data decriptor. When xio reachs the the top of the stack it calls a user callback. When that callback returns all memory associated with the data descriptor is cleaned up. The interface function globus_xio_driver_data_descriptor_free() is used for this. Version 3.3 Mon Apr 30 2012 dd_driver(3)

Check Out this Related Man Page

Reading/Writing(3)						    globus xio							Reading/Writing(3)

NAME
Reading/Writing - globus_xio_register_read() semantics: If the waitforbytes parameter is greater than zero, the read will happen asynchronously and be completed when at least waitforbytes has been read/written. If the waitforbytes parameter is equal to zero, one of the following alternative behaviors occur: If the length of the buffer is > 0 the read happens synchronously. If the user is using one of the blocking xio calls, no internal callback will occur. If the length of the buffer is also 0, the call behaves like an asynchronous notification of data ready to be read. ie, an asynchronous select(). In any case, when an error occurs before the waitforbytes request has been met, the outgoing nbytes is set to the amount of data actually read before the error occurred. If the handle is not connected, the user should pass in a data descriptor. After the read, this data_descriptor will contain the contact string of the sender. The user can either get this contact string with GLOBUS_XIO_UDP_GET_CONTACT or pass the data descriptor directly to globus_xio_register_write() to send a message back to the sender. Also, if the handle is not connected, the waitforbytes should probably be 1 to guarantee that only one packet is received and the sender contact isnt overwritten by multiple packets from different senders. globus_xio_register_write() semantics: When performing a write, exactly one UDP packet is sent of the entire buffer length. The waitforbytes parameter is ignored. If the entire buffer can not be written, a GLOBUS_XIO_UDP_ERROR_SHORT_WRITE error will be returned with nbytes set to the number of bytes actually sent. If the handle is not 'connected', a contact string must be set in the data descriptor to globus_xio_register_write(). This can either be done explicitly with GLOBUS_XIO_UDP_SET_CONTACT or implicitly by passing in a data descriptor received from globus_xio_register_read(). The udp write semantics are always synchronous. No blocking or internal callback will occur when using globus_xio_write(). Author Generated automatically by Doxygen for globus xio from the source code. Version 3.3 Mon Apr 30 2012 Reading/Writing(3)
Man Page