Changeset f2d88f3 in mainline for uspace/lib/c
- Timestamp:
- 2019-01-04T21:22:17Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- af7b85b
- Parents:
- 06412ba
- Location:
- uspace/lib/c
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/io/chardev.c
r06412ba rf2d88f3 91 91 * @param size Maximum number of bytes to read 92 92 * @param nread Place to store actual number of bytes read 93 * @param flags @c chardev_f_nonblock to return immediately even if no 94 * bytes are available 93 95 * 94 96 * @return EOK on success or non-zero error code 95 97 */ 96 errno_t chardev_read(chardev_t *chardev, void *buf, size_t size, size_t *nread) 98 errno_t chardev_read(chardev_t *chardev, void *buf, size_t size, size_t *nread, 99 chardev_flags_t flags) 97 100 { 98 101 async_exch_t *exch = async_exchange_begin(chardev->sess); … … 104 107 105 108 ipc_call_t answer; 106 aid_t req = async_send_ 0(exch, CHARDEV_READ, &answer);109 aid_t req = async_send_1(exch, CHARDEV_READ, flags, &answer); 107 110 errno_t rc = async_data_read_start(exch, buf, size); 108 111 async_exchange_end(exch); -
uspace/lib/c/generic/io/chardev_srv.c
r06412ba rf2d88f3 48 48 size_t size; 49 49 size_t nread; 50 chardev_flags_t flags; 50 51 errno_t rc; 52 53 flags = IPC_GET_ARG1(*icall); 51 54 52 55 ipc_call_t call; … … 70 73 } 71 74 72 rc = srv->srvs->ops->read(srv, buf, size, &nread );75 rc = srv->srvs->ops->read(srv, buf, size, &nread, flags); 73 76 if (rc != EOK && nread == 0) { 74 77 async_answer_0(&call, rc); -
uspace/lib/c/include/io/chardev.h
r06412ba rf2d88f3 36 36 #include <async.h> 37 37 #include <stddef.h> 38 #include <types/io/chardev.h> 38 39 39 40 typedef struct { … … 43 44 extern errno_t chardev_open(async_sess_t *, chardev_t **); 44 45 extern void chardev_close(chardev_t *); 45 extern errno_t chardev_read(chardev_t *, void *, size_t, size_t *); 46 extern errno_t chardev_read(chardev_t *, void *, size_t, size_t *, 47 chardev_flags_t); 46 48 extern errno_t chardev_write(chardev_t *, const void *, size_t, size_t *); 47 49 -
uspace/lib/c/include/io/chardev_srv.h
r06412ba rf2d88f3 41 41 #include <stdbool.h> 42 42 #include <stddef.h> 43 #include <types/io/chardev.h> 43 44 44 45 typedef struct chardev_ops chardev_ops_t; … … 59 60 errno_t (*open)(chardev_srvs_t *, chardev_srv_t *); 60 61 errno_t (*close)(chardev_srv_t *); 61 errno_t (*read)(chardev_srv_t *, void *, size_t, size_t *); 62 errno_t (*read)(chardev_srv_t *, void *, size_t, size_t *, 63 chardev_flags_t); 62 64 errno_t (*write)(chardev_srv_t *, const void *, size_t, size_t *); 63 65 void (*def_handler)(chardev_srv_t *, ipc_call_t *); -
uspace/lib/c/include/types/io/chardev.h
r06412ba rf2d88f3 35 35 /** Chardev read/write operation flags */ 36 36 typedef enum { 37 /** No flags */ 38 chardev_f_none = 0, 37 39 /** Do not block even if no bytes can be transferred */ 38 40 chardev_f_nonblock = 0x1
Note:
See TracChangeset
for help on using the changeset viewer.