ureadc Kernel Service
Purpose
Writes a character to a buffer described by a uio structure.
Syntax
Parameters
| Item | Description |
|---|---|
| c | Specifies a character to be written to the buffer. |
| uiop | Points to a uio structure describing the buffer in which to place a character. |
Description
The ureadc kernel service writes a character to a buffer described by a uio structure. Device driver top half routines, especially character device drivers, frequently use the ureadc kernel service to transfer data into a user area.
The uio_resid and uio_iovcnt fields in the uio structure describing the data area must be greater than 0. If these fields are not greater than 0, an error is returned. The uio_segflg field in the uio structure is used to indicate whether the data is being written to a user- or kernel-data area. It is also used to indicate if the caller requires cross-memory operations and has provided the required cross-memory descriptors. The values for the flag are defined in the /usr/include/sys/uio.h file.
If the data is successfully written, the following fields in the uio structure are updated:
| Field | Description |
|---|---|
| uio_iov | Specifies the address of current iovec element to use. |
| uio_xmem | Specifies the address of current xmem element to use (used for cross-memory copy). |
| uio_iovcnt | Specifies the number of remaining iovec elements. |
| uio_iovdcnt | Specifies the number of iovec elements already processed. |
| uio_offset | Specifies the character offset on the device from which data is read. |
| uio_resid | Specifies the total number of characters remaining in the data area described by the uio structure. |
| iov_base | Specifies the address of the next available character in the data area described by the current iovec element. |
| iov_len | Specifies the length of remaining data area in the buffer described by the current iovec element. |
Execution Environment
The ureadc kernel service can be called from the process environment only.
Return Values
| Item | Description |
|---|---|
| 0 | Indicates successful completion. |
| ENOMEM | Indicates that there is no room in the buffer. |
| EFAULT | Indicates that the user location is not valid for one of
these reasons:
|