Age | Commit message (Collapse) | Author |
|
So that static linking of e.g. console.static can work.
* libdiskfs/io-stubs.c (diskfs_S_io_readsleep, diskfs_S_io_eofnotify,
diskfs_S_io_postnotify, diskfs_S_io_readnotify): Mark weak.
* libnetfs/fsstubs.c (netfs_S_file_notice_changes, netfs_S_file_getfh,
netfs_S_ifsock_getsockaddr): Likewise.
* libnetfs/fsysstubs.c (netfs_S_fsys_getfile: netfs_S_fsys_getpriv,
netfs_S_fsys_init, netfs_S_fsys_forward, netfs_S_fsys_startup):
Likewise.
* libpager/stubs.c (_pager_S_memory_object_copy,
_pager_S_memory_object_data_write,
_pager_S_memory_object_supply_completed): Likewise.
* libtrivfs/fsys-stubs.c (trivfs_S_fsys_startup, trivfs_S_fsys_getpriv,
trivfs_S_fsys_init, trivfs_S_fsys_getfile): Likewise.
* libtrivfs/io-stubs.c (trivfs_S_io_map_cntl, trivfs_S_io_get_conch,
trivfs_S_io_release_conch, trivfs_S_io_eofnotify, trivfs_S_io_prenotify,
trivfs_S_io_postnotify, trivfs_S_io_readsleep, trivfs_S_io_sigio,
trivfs_S_io_readnotify): Likewise.
|
|
* libdiskfs/io-restrict-auth.c (diskfs_S_io_restrict_auth): Do not
lock the associated node. No operation here needs synchronization.
* libnetfs/io-restrict-auth.c (netfs_S_io_restrict_auth): Likewise.
|
|
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Treat a shadow_root with
null shadow_root_parent as a "virtual root".
Analog to 6875a586.
|
|
* libdiskfs/dir-lookup.c (short_circuited_callback1): Move function to
libfshelp.
(diskfs_S_dir_lookup): Use the function from libfshelp instead.
* libdiskfs/fsys-getroot.c (diskfs_S_fsys_getroot): Adapt accordingly.
* libdiskfs/trans-callback.c (_diskfs_translator_callback2_fn): Likewise.
* libfshelp/fetch-root.c (fshelp_short_circuited_callback1): New function.
* libfshelp/fshelp.h (struct fshelp_stat_cookie): New definition.
(fshelp_short_circuited_callback1): New prototype.
* libnetfs/dir-lookup.c (short_circuited_callback1): Drop function.
(netfs_S_dir_lookup): Use the function from libfshelp instead.
* libnetfs/fsys-getroot.c (netfs_S_fsys_getroot): Adapt accordingly.
* libnetfs/trans-callback.c (_netfs_translator_callback2_fn): Likewise.
|
|
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Rename 'diruser' to
'dircred'.
|
|
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Rename 'error' to 'err'.
|
|
* libnetfs/dir-mkfile.c (netfs_S_dir_mkfile): Keep flags out of
OPENONLY_STATE_MODES, instead of flags of OPENONLY_STATE_MODES, for the
peropen's openstat.
|
|
* libnetfs/drop-node.c: Remove use of netfs_node_refcnt_lock.
* libnetfs/init-init.c: Remove netfs_node_refcnt_lock.
* libnetfs/make-node.c: Initialize refcounts in refcounts_init.
* libnetfs/netfs.h: Use refcounts_t for tracking node references. Remove
netfs_node_refcnt_lock. Add netfs_nref_light, netfs_nrele_light and
handler netfs_try_dropping_softrefs. Adjust comments.
* libnetfs/nput.c: Use refcounts_t. Call netfs_try_dropping_softrefs to
remove any soft reference that the translator might have acquired
during the lifetime of the node. Implement empty
netfs_try_dropping_softrefs.
* libnetfs/nref.c: Implement netfs_nref_light.
* libnetfs/nrele.c: Use refcounts_t and netfs_try_dropping_softrefs.
Implement netfs_nrele_light.
* ftpfs/dir.c: Use netfs_nref without locking the old
netfs_node_refcnt_lock.
* ftpfs/node.c: Likewise.
* usermux/mux.c: Use netfs_nref to increase hard references of the node.
* hostmux/mux.c: Use netfs_nref to increase hard references of the node.
* trans/fakeroot.c (new_node): Use a light reference when storing a node in the
hash table.
* trans/fakeroot.c (netfs_try_dropping_softrefs): Implement
netfs_try_dropping_softrefs to remove the node from the hash table.
* trans/fakeroot.c (netfs_node_norefs): Remove code to remove the node
from the hash table.
* trans/fakeroot.c (netfs_S_dir_lookup): Simplify lookup code since we
don't need to lock netfs_node_refcnt_lock anymore.
* procfs/netfs.c: Remove use of netfs_node_refcnt_lock.
* nfs/cache.c: Add mutex to handle exclusive access to nodehash. This
replaces the use of netfs_node_refcnt_lock.
* nfs/cache.c (lookup_handle): Use nodehash_ihash_lock when accessing
nodehash. Use netfs_nref_light to add one soft reference to the node
just added to nodehash.
* nfs/cache.c (netfs_node_norefs): Use netfs_nref. Don't use
netfs_node_refcnt_lock and don't remove the node from nodehash here.
* nfs/cache.c (netfs_try_dropping_softrefs): Drop the light reference
when the node has no more hard references.
* nfs/cache.c (recache_handle): Use nodehash_ihash_lock instead.
* nfs/ops.c (netds_attempt_unlink): Use refcounts_references.
* console/console.c (netfs_node_norefs): Use a soft reference to store
a node in dir_node, cons_node, disp_node, inp_node.
* console/console.c (netfs_try_dropping_softrefs): When dropping all
soft references remove node pointer from the fields above.
|
|
* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): When following a symlink,
if mustbedir is true, always append a slash to the symlink target, not only
when the target is absolute. Reset mustbedir to 0 before continuing the
lookup loop.
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): When following a symlink,
if mustbedir is true, append a slash to the symlink target. Reset mustbedir
to 0 before continuing the lookup loop.
* libtreefs/dir-lookup.c (_treefs_s_dir_lookup): Likewise.
|
|
* libnetfs/netfs.h: Remove prevp and next fields from struct node.
|
|
* libnetfs/trans-callback.c (_netfs_translator_callback2_fn): Fixed leaking
iouser and peropen structs on error.
|
|
netfs_make_protid.
* libnetfs/trans-callback.c: Add check for netfs_make_peropen.
|
|
* libnetfs/netfs.h: Use refcount_t.
* libnetfs/make-peropen.c: Initialize to 1 with refcount_init just like in libdiskfs.
* libnetfs/make-protid.c: Don't increment the count here. Do it like libdiskfs.
* libnetfs/io-duplicate.c: Add refcount_ref since netfs_make_protid no longer increments the refcount.
* libnetfs/io-reauthenticate.c: Likewise.
* libnetfs/io-restrict-auth.c: Likewise.
* libnetfs/release-peropen.c: Dereference without locking.
|
|
* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): If mustbedir, make sure
entry is a directory by retrying "/", or starting the translator and
retrying "/".
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Likewise.
|
|
|
|
* libnetfs/io-reauthenticate.c (netfs_S_io_reauthenticate): Loop when
netfs_make_protid fails with EINTR, return error when it fails otherwise.
|
|
Follow-up dbfa8a3
* libnetfs/io-reauthenticate.c (netfs_S_io_reauthenticate): Do not
deallocate parameter port `rend_port' when an error will be returned.
* libtrivfs/io-reauthenticate.c (trivfs_S_io_reauthenticate): Do not
deallocate parameter port `rend_port' when an error will be returned.
|
|
* libdiskfs/io-reauthenticate.c (diskfs_S_io_reauthenticate): Release the node
lock while blocking on the auth server and client.
* libnetfs/io-reauthenticate.c (netfs_S_io_reauthenticate): Likewise.
* pfinet/io-ops.c (S_io_reauthenticate): Likewise.
|
|
|
|
* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): Match "." path as being the
root directory.
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Likewise.
|
|
* console/priv.h (begin_using_protid_payload): New function.
* console/mutations.h: Add mutators.
|
|
* libnetfs/priv.h (begin_using_protid_payload): New function.
* libnetfs/mutations.h: Add mutator.
|
|
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Initialize
register_translator to 0, otherwise it may be used uninitialized in case
of non-ENOENT errors.
|
|
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Prepend current path to
the relative path before recording the active translator.
|
|
* libcons/extra-version.c (cons_extra_version): Add weak attribute.
* libcons/vcons-add.c (cons_vcons_add): Likewise.
* libcons/vcons-remove.c (cons_vcons_remove): Likewise.
* libdiskfs/extra-version.c (diskfs_extra_version): Likewise.
* libdiskfs/get-source.c (diskfs_get_source): Likewise.
* libdiskfs/readonly-changed.c (diskfs_readonly_changed): Likewise.
* libdiskfs/sync-default.c (diskfs_default_sync_interval): Likewise.
* libdiskfs/validate-author.c (diskfs_validate_author_change): Likewise.
* libdiskfs/validate-flags.c (diskfs_validate_flags_change): Likewise.
* libdiskfs/validate-group.c (diskfs_validate_group_change): Likewise.
* libdiskfs/validate-mode.c (diskfs_validate_mode_change): Likewise.
* libdiskfs/validate-owner.c (diskfs_validate_owner_change): Likewise.
* libdiskfs/validate-rdev.c (diskfs_validate_rdev_change): Likewise.
* libnetfs/file-get-storage-info-default.c (netfs_file_get_storage_info):
Likewise.
* libnetfs/get-source.c (netfs_get_source): Likewise.
* libnetfs/set-get-trans.c (netfs_set_translator, netfs_get_translator):
Likewise.
* libtrivfs/get-source.c (trivfs_get_source): Likewise.
|
|
When first introduced as fsys_get_children, it made sense to return
the list of children using paths relative to the root of the
filesystem that was queried. Making the get_children method part of
the fsys protocol was a mistake that has since been corrected in
9366d6b2.
Instead of returning paths relative to the root of the translator,
return paths relative to the path of the receiving node.
This fixes a problem with the mtab translator. Previously, the mtab
translator invoked on a target that was not the root directory of a
translator would compute invalid paths, e.g.:
/hurd/mtab: /any/path/servers/socket/26 No such file or directory
* hurd/fs.defs (file_get_children): Update comment.
* libfshelp/translator-list.c (fshelp_get_active_translators): Add
argument PREFIX. Filter entries not beginning with PREFIX if
non-NULL, and omit PREFIX from the returned paths.
* libfshelp/fshelp.h (fshelp_get_active_translators): Update comment
accordingly. Also clarify that both FILTER and PREFIX can be NULL.
* libdiskfs/file-get-children.c (diskfs_S_file_get_children): Update
comment, pass prefix to fshelp_get_active_translators.
* libnetfs/file-get-children.c (netfs_S_file_get_children): Likewise.
|
|
* libnetfs/trans-callback.c (_netfs_translator_callback2_fn): Free
user if creating the protid failed.
|
|
libnetfs has two kind of nodes, struct node and struct netnode.
struct node is used to store libnetfs specific data, while struct
netnode contains user supplied data. Previously, both objects were
allocated separatly, and a pointer from the node to the netnode
provided a mapping from the former to the latter.
Provide a function netfs_make_node_alloc that allocates both nodes in
a contiguous region.
This reduces the memory allocation overhead when creating nodes. It
also makes the relation between node and netnode a simple offset
calculation. Provide two functions to compute the netnode address
from the node address and vice-versa.
Most notably, this makes implementing a cache on top of libnetfs
easier. Auxiliary data for the cache can be stored in the
user-defined netnode, and the fat node can be used as the value.
* libnetfs/make-node.c (init_node): Move initialization here.
(netfs_make_node): Use init_node.
(netfs_make_node_alloc): New function to allocate fat nodes.
* libnetfs/netfs.h (netfs_make_node_alloc): New declaration.
(_netfs_sizeof_struct_node): Likewise.
(netfs_node_netnode): Compute netnode address from node address.
(netfs_netnode_node): And vice-versa.
* libnetfs/init-init.c (_netfs_sizeof_struct_node): New variable.
|
|
This enables the compiler to check that the server function
declarations match MIGs expectations. Fix a few oddities along the
way.
* console-client/trans.c: Include MIG-generated server header file(s).
* console/console.c: Likewise. Also, fix declarations.
* console/mutations.h (TIOCTL_IMPORTS): Just use libnetfs/priv.h.
* console/priv.h: Delete now unused file.
* ext2fs/storeinfo.c: Include MIG-generated server header file(s).
* fatfs/inode.c: Likewise.
* fatfs/main.c: Likewise. Also, fix declaration.
* isofs/inode.c: Likewise.
* libdiskfs/boot-start.c: Likewise.
* libdiskfs/file-chg.c: Include the correct MIG-generated server header file.
* libdiskfs/file-chmod.c: Include MIG-generated server header file(s).
* libdiskfs/file-get-fs-opts.c: Likewise.
* libdiskfs/init-startup.c: Likewise.
* libnetfs/file-get-children.c: Likewise.
* libnetfs/file-getcontrol.c: Include the correct MIG-generated server
header file.
* libnetfs/file-set-translator.c: Include MIG-generated server header file(s).
* libnetfs/fsstubs.c: Likewise.
* libtrivfs/file-access.c: Likewise.
* libtrivfs/file-chauthor.c: Likewise.
* libtrivfs/file-chflags.c: Likewise.
* libtrivfs/file-chg.c: Likewise.
* libtrivfs/file-chmod.c: Likewise.
* libtrivfs/file-chown.c: Likewise.
* libtrivfs/file-exec.c: Likewise.
* libtrivfs/file-get-children.c: Likewise.
* libtrivfs/file-get-fs-options.c: Likewise.
* libtrivfs/file-get-source.c: Likewise.
* libtrivfs/file-get-storage-info.c: Likewise.
* libtrivfs/file-get-trans.c: Likewise.
* libtrivfs/file-get-transcntl.c: Likewise.
* libtrivfs/file-getcontrol.c: Likewise.
* libtrivfs/file-getfh.c: Likewise.
* libtrivfs/file-getlinknode.c: Likewise.
* libtrivfs/file-lock.c: Likewise.
* libtrivfs/file-reparent.c: Likewise.
* libtrivfs/file-set-size.c: Likewise.
* libtrivfs/file-set-trans.c: Likewise.
* libtrivfs/file-statfs.c: Likewise.
* libtrivfs/file-sync.c: Likewise.
* libtrivfs/file-syncfs.c: Likewise.
* libtrivfs/file-utimes.c: Likewise.
* libtrivfs/fsys-forward.c: Likewise.
* libtrivfs/fsys-get-options.c: Likewise.
* libtrivfs/fsys-getroot.c: Likewise.
* libtrivfs/fsys-goaway.c: Likewise.
* libtrivfs/fsys-set-options.c: Likewise.
* libtrivfs/fsys-stubs.c: Likewise.
* libtrivfs/fsys-syncfs.c: Likewise.
* libtrivfs/io-async-icky.c: Likewise.
* libtrivfs/io-async.c: Likewise.
* libtrivfs/io-duplicate.c: Likewise.
* libtrivfs/io-identity.c: Likewise.
* libtrivfs/io-map.c: Likewise.
* libtrivfs/io-modes-get.c: Likewise.
* libtrivfs/io-modes-off.c: Likewise.
* libtrivfs/io-modes-on.c: Likewise.
* libtrivfs/io-modes-set.c: Likewise.
* libtrivfs/io-owner-get.c: Likewise.
* libtrivfs/io-owner-mod.c: Likewise.
* libtrivfs/io-pathconf.c: Likewise.
* libtrivfs/io-read.c: Likewise.
* libtrivfs/io-readable.c: Likewise.
* libtrivfs/io-reauthenticate.c: Likewise.
* libtrivfs/io-restrict-auth.c: Likewise.
* libtrivfs/io-revoke.c: Likewise.
* libtrivfs/io-seek.c: Likewise.
* libtrivfs/io-select.c: Likewise.
* libtrivfs/io-stat.c: Likewise.
* libtrivfs/io-stubs.c: Likewise.
* libtrivfs/io-version.c: Likewise.
* libtrivfs/io-write.c: Likewise.
* pfinet/tunnel.c: Likewise.
* storeio/io.c: Likewise.
* storeio/storeio.c: Likewise.
* term/users.c: Likewise.
* tmpfs/node.c: Likewise.
* trans/fakeroot.c: Likewise. Also, include all server headers that provide
the X_server_routine functions...
(netfs_demuxer): ... that were previously declared here.
* trans/fifo.c: Include MIG-generated server header file(s).
* trans/firmlink.c: Likewise.
* trans/hello-mt.c: Likewise.
* trans/hello.c: Likewise.
* trans/magic.c: Likewise.
* trans/mtab.c: Likewise.
* trans/new-fifo.c: Likewise.
* trans/null.c: Likewise.
* trans/proxy-defpager.c: Likewise.
* trans/streamio.c: Likewise.
* libdiskfs/fsmutations.h: Qualify the import with the libraries path.
Without this change, out-of-tree builds would no longer work.
* libnetfs/mutations.h: Likewise.
* libtrivfs/mig-mutate.h: Likewise.
|
|
* mutations.h: Add translation functions.
* netfs.h (struct netfs_control): New declaration.
* priv.h: Define translation functions.
* fsys-get-options.c: Fix receiver lookups.
* fsys-getroot.c: Likewise.
* fsys-goaway.c: Likewise.
* fsys-set-options.c: Likewise.
* fsys-syncfs.c: Likewise.
* fsysstubs.c: Likewise.
|
|
* hurd/fs.defs: Add file_get_children and file_get_source.
* hurd/fsys.defs: Remove fsys_get_children and fsys_get_source.
* libdiskfs/fsys-get-children.c: Rename and adapt accordingly.
* libdiskfs/fsys-get-source.c: Likewise.
* libnetfs/fsys-get-children.c: Likewise.
* libnetfs/fsys-get-source.c: Likewise.
* libtrivfs/fsys-get-children.c: Likewise.
* libtrivfs/fsys-get-source.c: Likewise.
* libdiskfs/diskfs.h: Adapt prototype and comment.
* libnetfs/netfs.h: Likewise.
* libtrivfs/trivfs.h: Likewise.
* libdiskfs/get-source.c: Adapt default implementation, provide
diskfs_disk_name by default.
* libnetfs/netfs.h: Adapt default implementation.
* libtrivfs/get-source.c: Likewise.
* libdiskfs/Makefile: Adapt accordingly.
* libnetfs/Makefile: Likewise.
* libtrivfs/Makefile: Likewise.
* trans/symlink.c: Likewise.
* trans/mtab.c: Likewise.
|
|
* libnetfs/release-peropen.c (netfs_release_peropen): Release the lock on
the underlying node if the peropen status indicates it's not unlocked.
|
|
GNU MIG recently gained support for emitting x_server_routine
declarations in the generated server header file. Using this
declaration, the x_server_routine functions can be inlined into the
demuxer function.
* libnetfs/demuxer.c: Include the mig-generated server headers.
|
|
Detect passive translator startup and add the resulting active
translator to the list of active translators.
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Detect and register
passive translator startup.
|
|
To detect if an active translator goes away, we need to register for
dead name notifications. Those notifications have to be sent to a port
known to the ports library, as the ports library handles the dead name
notifications. The most straight forward way is to use the port to the
underlying node for that. To that end, a reference to the port_info
struct is handed in and kept in the list of active translators.
This commit also moves the registration of dead name notifications to
libfshelp.
* libfshelp/fshelp.h (fshelp_set_active_translator): Add port_info argument.
* libfshelp/translator-list.c (struct translator): Add port_info pointer.
(translator_ihash_cleanup): Dereference port_info object.
(fshelp_set_active_translator): Register dead name notifications.
* libdiskfs/file-set-trans.c (diskfs_S_file_set_translator): Update
accordingly.
* libnetfs/file-set-translator.c (netfs_S_file_set_translator): Likewise.
|
|
Handle multiple request types as recommended by the Mach Server
Writer's Guide section 4, subsection "Handling Multiple Request
Types". This avoids initializing the reply message in every X_server
function. The reply message has already been properly initialized in
libports, so there is no need to call mig_reply_setup.
* libnetfs/demuxer.c (netfs_demuxer): Improve the demuxer function.
|
|
Some files were not normalized. In console/motd.UTF8 the additional
newline is intentional. Empty files were excluded as well.
|
|
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Properly jump to the
single exit point if fshelp_fetch_root fails.
|
|
* libdiskfs/file-set-size.c (diskfs_S_file_set_size): Return EINVAL if
size is negative.
* libnetfs/file-set-size.c (netfs_S_file_set_size): Likewise.
* libtreefs/s-file.c (treefs_S_file_set_size): Likewise.
* storeio/io.c (trivfs_S_file_set_size): Likewise.
* term/users.c (trivfs_S_file_set_size): Likewise.
* trans/null.c (trivfs_S_file_set_size): Likewise.
* trans/streamio.c (trivfs_S_file_set_size): Likewise.
|
|
* libdiskfs/peropen-make.c (diskfs_make_peropen): Move `strdup` before port
reference modifications, to fix abortion.
* libnetfs/make-peropen.c (netfs_make_peropen): Check for `malloc` failure.
Move `strdup` before port reference modifications, to fix abortion.
|
|
Add a user overridable function netfs_get_source with a default
implementation returning EOPNOTSUPP. Add a server function for
fsys-get-source.
* libnetfs/Makefile: Add fsys-get-source.c and get-source.c
* libnetfs/netfs.h: Add netfs_get_source.
* libnetfs/fsys-get-source.c: New file.
* libnetfs/get-source.c: Likewise.
|
|
Keep track of active translators and handle fsys_get_children
requests.
* libnetfs/Makefile (FSYSSRCS): Add fsys-get-children.c.
* libnetfs/dead-name.c (ports_dead_name): Remove dead translators.
* libnetfs/file-set-translator.c (netfs_S_file_set_translator): Register
active translators.
* libnetfs/fsys-get-children.c: New file.
|
|
Track the relative path used to obtain a file handle in the
struct peropen.
* libnetfs/netfs.h (struct peropen): New field path.
* libnetfs/make-peropen.c (netfs_make_peropen): Initialize path.
* libnetfs/release-peropen.c (netfs_release_peropen): Free path.
* libnetfs/fsys-getroot.c (netfs_S_fsys_getroot): Initialize path.
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Preserve the path.
|
|
Register libnetfs-based translators running as root as important
processes at the proc server.
* libnetfs/init-startup.c (netfs_startup): Mark us as important.
|
|
Handle dead-name notifications the same way libdiskfs does. In fact,
dead-name.c is a verbatim copy with trivial modifications. It clears
np->sockaddr if the dead name notification was for that port.
* libnetfs/dead-name.c: New file.
* libnetfs/Makefile (OTHERSRCS): Add dead-name.c.
|
|
This is a trivially adapted version of libdiskfs/file-get-transcntl.c.
* libnetfs/file-get-transcntl.c: New file.
|
|
* libnetfs/file-get-translator.c (netfs_S_file_get_translator): Call memcpy
instead of memmove.
|
|
Properly respond to file_get_translator requests for nodes with a
passive translator record.
* libnetfs/file-get-translator.c (netfs_S_file_get_translator): Handle
passive translator records.
|
|
passive is not a zero terminated string but a char * combined with a
length. If passivelen == 0, passive may very well be not NULL, and
dereferencing that pointer might not be safe. At the very least the
consistency check is wrong. Fix that by checking passivelen instead of
passive.
* libnetfs/file-set-trans.c (netfs_S_file_set_translator): Fix sanity check.
|
|
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.
|