Changeset f2d88f3 in mainline for uspace/drv/char
- 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/drv/char
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/char/i8042/i8042.c
r06412ba rf2d88f3 67 67 68 68 static void i8042_char_conn(ipc_call_t *, void *); 69 static errno_t i8042_read(chardev_srv_t *, void *, size_t, size_t *); 69 static errno_t i8042_read(chardev_srv_t *, void *, size_t, size_t *, 70 chardev_flags_t); 70 71 static errno_t i8042_write(chardev_srv_t *, const void *, size_t, size_t *); 71 72 … … 385 386 */ 386 387 static errno_t i8042_read(chardev_srv_t *srv, void *dest, size_t size, 387 size_t *nread )388 size_t *nread, chardev_flags_t flags) 388 389 { 389 390 i8042_port_t *port = (i8042_port_t *)srv->srvs->sarg; … … 394 395 fibril_mutex_lock(&port->buf_lock); 395 396 396 while (circ_buf_nused(&port->cbuf) == 0) 397 while ((flags & chardev_f_nonblock) == 0 && 398 circ_buf_nused(&port->cbuf) == 0) 397 399 fibril_condvar_wait(&port->buf_cv, &port->buf_lock); 398 400 -
uspace/drv/char/msim-con/msim-con.c
r06412ba rf2d88f3 43 43 static void msim_con_connection(ipc_call_t *, void *); 44 44 45 static errno_t msim_con_read(chardev_srv_t *, void *, size_t, size_t *); 45 static errno_t msim_con_read(chardev_srv_t *, void *, size_t, size_t *, 46 chardev_flags_t); 46 47 static errno_t msim_con_write(chardev_srv_t *, const void *, size_t, size_t *); 47 48 … … 185 186 /** Read from msim console device */ 186 187 static errno_t msim_con_read(chardev_srv_t *srv, void *buf, size_t size, 187 size_t *nread )188 size_t *nread, chardev_flags_t flags) 188 189 { 189 190 msim_con_t *con = (msim_con_t *) srv->srvs->sarg; … … 194 195 fibril_mutex_lock(&con->buf_lock); 195 196 196 while (circ_buf_nused(&con->cbuf) == 0) 197 while ((flags & chardev_f_nonblock) == 0 && 198 circ_buf_nused(&con->cbuf) == 0) 197 199 fibril_condvar_wait(&con->buf_cv, &con->buf_lock); 198 200 -
uspace/drv/char/ns8250/ns8250.c
r06412ba rf2d88f3 246 246 * @param count The number of bytes to be read. 247 247 * @param nread Place to store number of bytes actually read 248 * @param flags @c chardev_f_nonblock not to block waiting for data 249 * even if no data is available 248 250 * 249 251 * @return EOK on success or non-zero error code 250 252 */ 251 static errno_t ns8250_read(chardev_srv_t *srv, void *buf, size_t count, size_t *nread) 253 static errno_t ns8250_read(chardev_srv_t *srv, void *buf, size_t count, size_t *nread, 254 chardev_flags_t flags) 252 255 { 253 256 ns8250_t *ns = srv_ns8250(srv); … … 261 264 262 265 fibril_mutex_lock(&ns->mutex); 263 while (buf_is_empty(&ns->input_buffer)) 266 while ((flags & chardev_f_none) == 0 && 267 buf_is_empty(&ns->input_buffer)) 264 268 fibril_condvar_wait(&ns->input_buffer_available, &ns->mutex); 265 269 while (!buf_is_empty(&ns->input_buffer) && pos < count) { -
uspace/drv/char/pc-lpt/pc-lpt.c
r06412ba rf2d88f3 45 45 static void pc_lpt_connection(ipc_call_t *, void *); 46 46 47 static errno_t pc_lpt_read(chardev_srv_t *, void *, size_t, size_t *); 47 static errno_t pc_lpt_read(chardev_srv_t *, void *, size_t, size_t *, 48 chardev_flags_t); 48 49 static errno_t pc_lpt_write(chardev_srv_t *, const void *, size_t, size_t *); 49 50 … … 224 225 /** Read from pc-lpt device */ 225 226 static errno_t pc_lpt_read(chardev_srv_t *srv, void *buf, size_t size, 226 size_t *nread )227 size_t *nread, chardev_flags_t flags) 227 228 { 228 229 pc_lpt_t *lpt = (pc_lpt_t *) srv->srvs->sarg; -
uspace/drv/char/pl050/pl050.c
r06412ba rf2d88f3 59 59 static errno_t pl050_fun_offline(ddf_fun_t *); 60 60 static void pl050_char_conn(ipc_call_t *, void *); 61 static errno_t pl050_read(chardev_srv_t *, void *, size_t, size_t *); 61 static errno_t pl050_read(chardev_srv_t *, void *, size_t, size_t *, 62 chardev_flags_t); 62 63 static errno_t pl050_write(chardev_srv_t *, const void *, size_t, size_t *); 63 64 … … 242 243 243 244 static errno_t pl050_read(chardev_srv_t *srv, void *buffer, size_t size, 244 size_t *nread )245 size_t *nread, chardev_flags_t flags) 245 246 { 246 247 pl050_t *pl050 = (pl050_t *)srv->srvs->sarg; … … 252 253 left = size; 253 254 while (left > 0) { 254 while (left == size && pl050->buf_rp == pl050->buf_wp) 255 while ((flags & chardev_f_nonblock) == 0 && 256 left == size && pl050->buf_rp == pl050->buf_wp) 255 257 fibril_condvar_wait(&pl050->buf_cv, &pl050->buf_lock); 256 258 if (pl050->buf_rp == pl050->buf_wp) -
uspace/drv/char/ski-con/ski-con.c
r06412ba rf2d88f3 55 55 static void ski_con_connection(ipc_call_t *, void *); 56 56 57 static errno_t ski_con_read(chardev_srv_t *, void *, size_t, size_t *); 57 static errno_t ski_con_read(chardev_srv_t *, void *, size_t, size_t *, 58 chardev_flags_t); 58 59 static errno_t ski_con_write(chardev_srv_t *, const void *, size_t, size_t *); 59 60 … … 260 261 /** Read from Ski console device */ 261 262 static errno_t ski_con_read(chardev_srv_t *srv, void *buf, size_t size, 262 size_t *nread )263 size_t *nread, chardev_flags_t flags) 263 264 { 264 265 ski_con_t *con = (ski_con_t *) srv->srvs->sarg; … … 269 270 fibril_mutex_lock(&con->buf_lock); 270 271 271 while (circ_buf_nused(&con->cbuf) == 0) 272 while ((flags & chardev_f_nonblock) == 0 && 273 circ_buf_nused(&con->cbuf) == 0) 272 274 fibril_condvar_wait(&con->buf_cv, &con->buf_lock); 273 275 -
uspace/drv/char/sun4v-con/sun4v-con.c
r06412ba rf2d88f3 46 46 #define POLL_INTERVAL 10000 47 47 48 static errno_t sun4v_con_read(chardev_srv_t *, void *, size_t, size_t *); 48 static errno_t sun4v_con_read(chardev_srv_t *, void *, size_t, size_t *, 49 chardev_flags_t); 49 50 static errno_t sun4v_con_write(chardev_srv_t *, const void *, size_t, size_t *); 50 51 … … 154 155 /** Read from Sun4v console device */ 155 156 static errno_t sun4v_con_read(chardev_srv_t *srv, void *buf, size_t size, 156 size_t *nread )157 size_t *nread, chardev_flags_t flags) 157 158 { 158 159 sun4v_con_t *con = (sun4v_con_t *) srv->srvs->sarg; … … 161 162 char c; 162 163 163 while (con->input_buffer->read_ptr == con->input_buffer->write_ptr) 164 while ((flags & chardev_f_nonblock) == 0 && 165 con->input_buffer->read_ptr == con->input_buffer->write_ptr) 164 166 fibril_usleep(POLL_INTERVAL); 165 167
Note:
See TracChangeset
for help on using the changeset viewer.