aboutsummaryrefslogtreecommitdiff
path: root/storeio/io.c
Commit message (Collapse)AuthorAgeFilesLines
* Add io_select_timeout to the io interfaceRichard Braun2013-02-281-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change fixes a problem that can occur with non-blocking (and also blocking for very short times) select/poll calls. The problem occurs because the timeout is implemented at the client side. For a non-blocking call, this means that (depending on the code path taken in the C library) the client could get a timeout without a full RPC round-trip to the server. Moving the implementation of the timeout to the servers guarantees a full round-trip, and correct results for non-blocking calls. The modifications in this change depend on the availability of the recently added pthread_hurd_cond_timedwait_np function in libpthread. * boot/boot.c (io_select_common): New static function. (S_io_select): Use io_select_common. (S_io_select_timeout): New function which makes use of io_select_common. * console-client/kbd-repeat.c (repeater_select): Add a timeout parameter. * console-client/pc-mouse.c (repeater_select): Likewise. * console-client/trans.c (io_select_common): New static function. (netfs_S_io_select): Use io_select_common. (netfs_S_io_select_timeout): New function which makes use of io_select_common. * console-client/trans.h (struct consnode): Add a timeout parameter. * hurd/io.defs (io_select_timeout): New MIG routine. * hurd/io_reply.defs (io_select_timeout_reply): New MIG simpleroutine. * hurd/io_request.defs (io_select_timeout_request): Likewise. * libdiskfs/io-select.c (diskfs_S_io_select_timeout): New function. * libnetfs/io-select.c (netfs_S_io_select_timeout): Likewise. * libpipe/pipe.c (pipe_pair_select): Add a timeout parameter. * libpipe/pipe.h (pipe_select_readable): Likewise. (pipe_select_writable): Likewise. (pipe_pair_select): Likewise. * libpipe/pq.h: Include <hurd/hurd_types.h>. * libtrivfs/io-select.c (trivfs_S_io_select_timeout): New function. * pfinet/glue-include/linux/sched.h: Include <errno.h>. (interruptible_sleep_on): Function removed, replaced with ... (interruptible_sleep_on_timeout): New function. (schedule): Update to use interruptible_sleep_on_timeout. (schedule_timeout): Likewise. * pfinet/io-ops.c (io_select_common): New static function. (S_io_select): Use io_select_common. (S_io_select_timeout): New function which makes use of io_select_common. * pfinet/tunnel.c (io_select_common): New static function. (trivfs_S_io_select): Use io_select_common. (trivfs_S_io_select_timeout): New function which makes use of io_select_common. * pflocal/connq.c (connq_listen): Replace noblock with a timeout parameter. * pflocal/connq.h: Include <hurd/hurd_types.h>. (connq_listen): Update declaration to replace noblock with a timeout parameter. * pflocal/io.c (io_select_common): New static function. (S_io_select): Use io_select_common. (S_io_select_timeout): New function which makes use of io_select_common. * pflocal/socket.c (S_socket_accept): Update call to connq_listen to match new declaration. * storeio/io.c (trivfs_S_io_select_timeout): New function. * term/ptyio.c (pty_io_select): Add a timeout parameter. * term/term.h (pty_io_select): Likewise. * term/users.c (io_select_common): New static function. (trivfs_S_io_select): Use io_select_common. (trivfs_S_io_select_timeout): New function which makes use of io_select_common. * trans/fifo.c (io_select_common): New static function. (trivfs_S_io_select): Use io_select_common. (trivfs_S_io_select_timeout): New function which makes use of io_select_common. * trans/firmlink.c (trivfs_S_io_select_timeout): New function. * trans/new-fifo.c (io_select_common): New static function. (trivfs_S_io_select): Use io_select_common. (trivfs_S_io_select_timeout): New function which makes use of io_select_common. * trans/null.c (trivfs_S_io_select_timeout): New function. * trans/streamio.c (io_select_common): New static function. (trivfs_S_io_select): Use io_select_common. (trivfs_S_io_select_timeout): New function which makes use of io_select_common.
* 2002-06-13 Roland McGrath <roland@frob.com>Roland McGrath2002-06-131-6/+6
| | | | | | * io.c (trivfs_S_io_read, trivfs_S_io_write): off_t -> loff_t. Fix DATA argument type. (trivfs_S_file_sync): Add missing last arg.
* 2000-03-19 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath2000-03-191-5/+4
| | | | * io.c: Comments.
* 1999-11-14 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath1999-11-181-2/+28
| | | | | | | | | | | | * io.c (trivfs_S_file_get_storage_info): Fail with EOPNOTSUPP when there is no store open. * dev.h (struct dev): New member `enforced'. * storeio.c (enforce_store): New variable. (options, parse_opt, trivfs_append_args): Grok new option --enforced/-e to set enforce_store. (check_open_hook): Set DEVICE->enforced from enforce_store. * io.c (trivfs_S_file_get_storage_info): If DEV->enforced is set and the store flags lack STORE_ENFORCED, then return STORAGE_OTHER.
* Reverted changes related to io_map_segment.Roland McGrath1999-09-131-3/+1
|
* 1999-09-07 Thomas Bushnell, BSG <tb@mit.edu>Thomas Bushnell1999-09-081-1/+3
| | | | | * io.c (trivfs_S_io_map): Renamed to ... (trivfs_S_io_map_segment): ... here, and accept parameter `index'.
* 1999-01-28 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath1999-01-281-4/+4
| | | | | * io.c (trivfs_S_file_syncfs): Fix inverted test. Reported by OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp>.
* (trivfs_S_io_select):Miles Bader1997-07-231-10/+6
| | | | | | Don't bother returning EBADF. (trivfs_S_io_readable, trivfs_S_io_read, trivfs_S_io_map): Return EBADF instead of EINVAL.
* (trivfs_S_io_read):Miles Bader1997-07-221-1/+3
| | | | | | Return EINVAL instead of EBADF. (trivfs_S_io_map): Return EINVAL if CRED cannot be read or written.
* (trivfs_S_io_map):Miles Bader1997-07-171-5/+10
| | | | Pass PROT argument to dev_get_memory_object.
* (trivfs_S_io_map):Miles Bader1997-07-161-12/+12
| | | | Make sure there are enough references to MEMOBJ for both read & write ports.
* (trivfs_S_file_get_storage_info):Miles Bader1996-10-081-3/+28
| | | | | If necessary to enforce security, make a copy of STORE and inactivate it before returning.
* (trivfs_S_io_read, trivfs_S_io_write):Miles Bader1996-09-231-2/+2
| | | | Use void * buffers.
* (trivfs_S_file_get_storage_info): Use store_return.Miles Bader1996-09-141-22/+5
|
* Initial checkinMiles Bader1996-09-081-0/+329