freebsd-dev/sys
Ed Schouten 3720b82fa8 Implement CloudABI's readdir().
Summary:
CloudABI's readdir() system call could be thought of as a mixture
between FreeBSD's getdents(2) and pread(). Instead of using the file
descriptor offset, userspace provides a 64-bit cloudabi_dircookie_t
continue reading at a given point. CLOUDABI_DIRCOOKIE_START, having
value 0, can be used to return entries at the start of the directory.

The file descriptor offset is not used to store the cookie for the
reason that in a file descriptor centric environment, it would make
sense to allow concurrent use of a single file descriptor.

The remaining space returned by the system call should be filled with a
partially truncated copy of the next entry. The advantage of doing this
is that it gracefully deals with long filenames. If the C library
provides a buffer that is too small to hold a single entry, it can still
extract the directory entry header, meaning that it can retry the read
with a larger buffer or skip it using the cookie.

Test Plan:
This implementation passes the cloudlibc unit tests at:

	https://github.com/NuxiNL/cloudlibc/tree/master/src/libc/dirent

Reviewers: marcel, kib

Reviewed By: kib

Subscribers: imp

Differential Revision: https://reviews.freebsd.org/D3226
2015-07-29 06:31:44 +00:00
..
amd64 Remove full barrier from the amd64 atomic_load_acq_*(). Strong 2015-07-28 07:04:51 +00:00
arm Fix color mapping for TDA19988. Values for VIP_CNTRL_1 and VIP_CNTRL_2 2015-07-25 03:19:02 +00:00
arm64 Teach the GICv2 driver about the Qualcomm GICv2 compatible string. 2015-07-21 18:08:10 +00:00
boot Use consistent spacing. 2015-07-25 20:17:19 +00:00
bsm
cam Refactor unmapped buffer address handling. 2015-07-23 19:13:41 +00:00
cddl Add warning about low KSTACK_PAGES for ZFS use 2015-07-28 11:19:38 +00:00
compat Implement CloudABI's readdir(). 2015-07-29 06:31:44 +00:00
conf Merge ACPICA 20150717. 2015-07-22 16:25:07 +00:00
contrib Import Annapurna Labs Alpine HAL to sys/contrib/ 2015-07-28 14:20:33 +00:00
crypto Complete the move that was started w/ r263218.. For some reason I 2015-07-11 03:12:34 +00:00
ddb Various changes to the registers displayed in DDB for x86. 2015-07-22 01:09:02 +00:00
dev drm/i915: Sort functions in i915_gem.c to match Linux 3.8's ordering 2015-07-28 21:47:37 +00:00
fs - Remove some dead code copied from ffs. 2015-07-29 03:06:08 +00:00
gdb CALLOUT_MPSAFE has lost its meaning since r141428, i.e., for more than ten 2015-05-22 17:05:21 +00:00
geom Report the scheme and provider names in warning message about unaligned 2015-07-26 11:16:48 +00:00
gnu The GNU Amlogic DTS files have some errors (e.g. bad register 2015-04-11 08:17:39 +00:00
i386 Remove duplicate and useless declarations. 2015-07-22 09:12:40 +00:00
isa
kern - Make 'struct buf *buf' private to vfs_bio.c. Having a global variable 2015-07-29 02:26:57 +00:00
kgssapi
libkern Remove checks for __ARM_EABI__, we only build for EABI now. 2015-07-09 21:02:40 +00:00
mips Populate hw.model with the CPU model information. 2015-07-14 05:14:10 +00:00
modules isl(4), driver for Intersil I2C ISL29018 Digital Ambient Light Sensor 2015-07-25 20:17:19 +00:00
net Prevent null-pointer dereferencing. 2015-07-20 08:21:51 +00:00
net80211 Break out the current 802.11 software scan methods into an indirect table. 2015-06-08 02:35:43 +00:00
netgraph * Address review (and add a bit myself). 2015-07-12 18:14:38 +00:00
netinet Fix a typo reported by Erik Cederstrand. 2015-07-28 08:50:13 +00:00
netinet6 Move including netinet/icmp6.h around to avoid a problem when including 2015-07-25 18:26:09 +00:00
netipsec IPSEC, remove variable argument function its already due. 2015-07-21 21:46:24 +00:00
netnatm
netpfil Simplify logic added in r285945 as suggested by glebius 2015-07-28 14:59:29 +00:00
netsmb
nfs Avoid closing unallocated socket in case socreate fails. 2015-02-28 20:30:29 +00:00
nfsclient Remove some oldnfs remnants. 2015-04-18 16:08:06 +00:00
nfsserver
nlm
ofed Fix broken implementation of "kvasprintf()" function by adding missing 2015-07-03 11:16:20 +00:00
opencrypto Fix XTS, and name things a bit better... 2015-07-14 07:45:18 +00:00
pc98 Spell crypto correctly. 2015-07-14 10:47:56 +00:00
powerpc Implement the lockstat provider using SDT(9) instead of the custom provider 2015-07-19 22:14:09 +00:00
rpc Remove useless acquire semantic from the atomic_add operation before 2015-07-28 06:58:10 +00:00
security fd: make 'rights' a manadatory argument to fget* functions 2015-07-05 19:05:16 +00:00
sparc64 o Revert the other functional half of r239864, i. e. the merge of r134227 2015-07-24 15:13:21 +00:00
sys - Make 'struct buf *buf' private to vfs_bio.c. Having a global variable 2015-07-29 02:26:57 +00:00
teken
tools
ufs - Make 'struct buf *buf' private to vfs_bio.c. Having a global variable 2015-07-29 02:26:57 +00:00
vm - Make 'struct buf *buf' private to vfs_bio.c. Having a global variable 2015-07-29 02:26:57 +00:00
x86 Add bit names for the IA32_MISC_ENABLE msr. 2015-07-28 06:55:08 +00:00
xdr
xen Garbage collect comments which related to the pre-r284296 support for a 2015-06-21 06:05:33 +00:00
Makefile Kill EoL whitespace. 2015-05-29 14:03:07 +00:00