Commit Graph

299 Commits

Author SHA1 Message Date
Szabolcs Nagy
20a34af862 fix typo in socket.h (wrong macro name) 2013-10-18 15:19:49 +00:00
Szabolcs Nagy
90710df5cc sys/resource.h: add PRIO_MIN and PRIO_MAX for getpriority and setpriority
These constants are not specified by POSIX, but they are in the reserved
namespace, glibc and bsd systems seem to provide them as well.
(Note that POSIX specifies -NZERO and NZERO-1 to be the limits, but
PRIO_MAX equals NZERO)
2013-09-16 15:16:55 +00:00
Szabolcs Nagy
ae51aa7534 sys/socket.h: add new SO_BUSY_POLL socket option
low latency busy poll sockets are new in linux v3.11
2013-09-15 04:54:19 +00:00
Szabolcs Nagy
0a7ecf7606 ptrace.h: add new ptrace requests to get/set sigmask
PTRACE_GETSIGMASK and PTRACE_SETSIGMASK were added in linux v3.11
and used by checkpoint/restore tools
2013-09-15 02:49:26 +00:00
Rich Felker
ecf4e24d81 add SUN_LEN macro to sys/un.h under appropriate feature tests
this is ugly and useless, but it seems to be the least-ugly way to
provide it...
2013-08-21 21:46:57 -04:00
Rich Felker
4ce6bd8345 add missing MSG_EXCEPT in sys/msg.h 2013-08-14 02:48:11 -04:00
Rich Felker
41c632824c fix definitions of WIFSTOPPED and WIFSIGNALED to support up to signal 127
mips has signal numbers up to 127 (formerly, up to 128, but the last
one never worked right and caused kernel panic when used), so 127 in
the "signal number" field of the wait status is insufficient for
determining that the process was stopped. in addition, a nonzero value
in the upper bits must be present, indicating the signal number which
caused the process to be stopped.

details on this issue can be seen in the email with message id
CAAG0J9-d4BfEhbQovFqUAJ3QoOuXScrpsY1y95PrEPxA5DWedQ@mail.gmail.com on
the linux-mips mailing list, archived at:
http://www.linux-mips.org/archives/linux-mips/2013-06/msg00552.html
and in the associated thread about fixing the mips kernel bug.

commit 4a96b948687166da26a6c327e6c6733ad2336c5c fixed the
corresponding issue in uClibc, but introduced a multiple-evaluation
issue for the WIFSTOPPED macro.

for the most part, none of these issues affected pure musl systems,
since musl has up until now (incorrectly) defined SIGRTMAX as 64 on
all archs, even mips. however, interpreting status of non-musl
programs on mips may have caused problems. with this change, the full
range of signal numbers can be made available on mips.
2013-08-10 23:33:54 -04:00
rofl0r
e28c2ecae4 sys/personality.h: add missing C++ compat 2013-08-08 20:57:35 +02:00
rofl0r
6a0aa82f51 sys/personality.h: add missing macros 2013-08-08 20:39:54 +02:00
Rich Felker
9a8d7bee80 add macros for new(ish) prctl commands 2013-07-30 18:15:50 -04:00
Rich Felker
9932505b68 fix some prctl macros that were incorrectly copied into this file 2013-07-30 13:04:31 -04:00
Rich Felker
54446d730c add wrapper headers, with warnings, for various incorrect names under sys
also add a warning to the existing sys/poll.h. the warning is absent
from sys/dir.h because it is actually providing a slightly different
API to the program, and thus just replacing the #include directive is
not a valid fix to programs using this one.
2013-07-27 17:11:34 -04:00
Szabolcs Nagy
3d4583c3fb add protocol families PF_IB and PF_VSOCK to socket.h
linux commit 8d36eb01da5d371feffa280e501377b5c450f5a5 (2013-05-29)
added PF_IB for InfiniBand

linux commit d021c344051af91f42c5ba9fdedc176740cbd238 (2013-02-06)
added PF_VSOCK for VMware sockets
2013-07-25 00:22:05 +00:00
Szabolcs Nagy
a512c7d849 add PTRACE_PEEKSIGINFO to ptrace.h
added in linux-v3.10 commit 84c751bd4aebbaae995fe32279d3dba48327bad4
using stdint.h types for the new ptrace_peeksiginfo_args struct
2013-07-24 22:17:24 +00:00
Szabolcs Nagy
8f6ec7217f add SO_SELECT_ERR_QUEUE to socket.h
introduced in linux-v3.10 commit 7d4c04fc170087119727119074e72445f2bb192b
2013-07-24 22:17:24 +00:00
Rich Felker
009f186810 move register_t and u_int64_t (back) to alltypes
during the header refactoring, I had moved u_int64_t out of alltypes
under the assumption that we could just use long long everywhere.
however, it seems some broken applications make inconsistent mixed use
of u_int64_t and uint64_t, resulting in build errors when the
underlying type differs.
2013-07-22 16:40:35 -04:00
Rich Felker
9448b0513e refactor headers, especially alltypes.h, and improve C++ ABI compat
the arch-specific bits/alltypes.h.sh has been replaced with a generic
alltypes.h.in and minimal arch-specific bits/alltypes.h.in.

this commit is intended to have no functional changes except:
- exposing additional symbols that POSIX allows but does not require
- changing the C++ name mangling for some types
- fixing the signedness of blksize_t on powerpc (POSIX requires signed)
- fixing the limit macros for sig_atomic_t on x86_64
- making dev_t an unsigned type (ABI matching goal, and more logical)

in addition, some types that were wrongly defined with long on 32-bit
archs were changed to int, and vice versa; this change is
non-functional except for the possibility of making pointer types
mismatch, and only affects programs that were using them incorrectly,
and only at build-time, not runtime.

the following changes were made in the interest of moving
non-arch-specific types out of the alltypes system and into the
headers they're associated with, and also will tend to improve
application compatibility:
- netdb.h now includes netinet/in.h (for socklen_t and uint32_t)
- netinet/in.h now includes sys/socket.h and inttypes.h
- sys/resource.h now includes sys/time.h (for struct timeval)
- sys/wait.h now includes signal.h (for siginfo_t)
- langinfo.h now includes nl_types.h (for nl_item)

for the types in stdint.h:
- types which are of no interest to other headers were moved out of
  the alltypes system.
- fast types for 8- and 64-bit are hard-coded (at least for now); only
  the 16- and 32-bit ones have reason to vary by arch.

and the following types have been changed for C++ ABI purposes;
- mbstate_t now has a struct tag, __mbstate_t
- FILE's struct tag has been changed to _IO_FILE
- DIR's struct tag has been changed to __dirstream
- locale_t's struct tag has been changed to __locale_struct
- pthread_t is defined as unsigned long in C++ mode only
- fpos_t now has a struct tag, _G_fpos64_t
- fsid_t's struct tag has been changed to __fsid_t
- idtype_t has been made an enum type (also required by POSIX)
- nl_catd has been changed from long to void *
- siginfo_t's struct tag has been removed
- sigset_t's has been given a struct tag, __sigset_t
- stack_t has been given a struct tag, sigaltstack
- suseconds_t has been changed to long on 32-bit archs
- [u]intptr_t have been changed from long to int rank on 32-bit archs
- dev_t has been made unsigned

summary of tests that have been performed against these changes:
- nsz's libc-test (diff -u before and after)
- C++ ABI check symbol dump (diff -u before, after, glibc)
- grepped for __NEED, made sure types needed are still in alltypes
- built gcc 3.4.6
2013-07-22 11:22:36 -04:00
Rich Felker
41e2fd9d52 add UIO_MAXIOV macro in sys/uio.h
while there's no POSIX namespace provision for UIO_* in uio.h, this
exact macro name is reserved in XBD 2.2.2. apparently some
glibc-centric software expects it to exist, so let's provide it.
2013-07-19 19:57:52 -04:00
Rich Felker
ca9aff6a16 add NFDBITS in sys/select.h with appropriate feature tests
the main use for this macro seems to be knowing the correct allocation
granularity for dynamic-sized fd_set objects. such usage is
non-conforming and results in undefined behavior, but it is widespread
in applications.
2013-07-06 01:12:28 -04:00
rofl0r
ab72420439 add legacy sys/ttydefaults.h header 2013-07-03 18:07:51 +02:00
Rich Felker
9b732fe51b fix shifts possibly larger than type in major() macro
in theory this should not be an issue, since major() should only be
applied to type dev_t, which is 64-bit. however, it appears some
applications are not using dev_t but a smaller integer type (which
works on Linux because the kernel's dev_t is really only 32-bit). to
avoid the undefined behavior, do it as two shifts.
2013-06-29 13:57:13 -04:00
Rich Felker
062f40ef3e work around wrong kernel type for sem_nsems member of struct semid_ds
rejecting invalid values for n is fine even in the case where a new
sem will not be created, since the kernel does its range checks on n
even in this case as well.

by default, the kernel will bound the limit well below USHRT_MAX
anyway, but it's presumably possible that an administrator could
override this limit and break things.
2013-06-28 23:57:58 -04:00
Rich Felker
553d566c3f add missing type shmatt_t in sys/shm.h
this type is not really intended to be used; it's just there to allow
implementations to choose the type for the shm_nattch member of
struct shmid_sh, presumably since historical implementations disagreed
on the type. in any case, it needs to be there, so now it is.
2013-06-28 23:39:50 -04:00
Szabolcs Nagy
31ff797787 fix the prototype of settimeofday to follow the original BSD declaration 2013-05-26 16:01:38 +00:00
Rich Felker
2c184264ea support full range of dev_t major/minor numbers in makedev, etc. macros 2013-05-15 16:15:50 -04:00
rofl0r
47cf4919fc re-add useconds_t
this type was removed back in 5243e5f160 ,
because it was removed from the XSI specs.
however some apps use it.
since it's in the POSIX reserved namespace, we can expose it
unconditionally.
2013-04-02 04:58:14 +02:00
Szabolcs Nagy
e82bd04cf7 add new socket options to sys/socket.h following linux 2013-04-01 16:24:12 +00:00
Szabolcs Nagy
d4c04d1360 add ADJ_SETOFFSET timex mode bit (new in linux v2.6.39) 2013-04-01 16:24:12 +00:00
Rich Felker
08514d0614 fix epoll structure alignment on non-x86_64 archs
this fix is far from ideal and breaks the rule of not using
arch-specific #ifdefs, but for now we just need a solution to the
existing breakage.

the underlying problem is that the kernel folks made a very stupid
decision to make misalignment of this struct part of the kernel
API/ABI for x86_64, in order to avoid writing a few extra lines of
code to handle both 32- and 64-bit userspace on 64-bit kernels. I had
just added the packed attribute unconditionally thinking it was
harmless on 32-bit archs, but non-x86 32-bit archs have 8-byte
alignment on 64-bit types.
2013-03-06 23:57:39 -05:00
Rich Felker
8c741783fc fix some obscure header type size/alignment issues 2013-03-04 17:05:45 -05:00
Szabolcs Nagy
200f96c6a0 add MOD_TAI to sys/timex.h and update STA_RONLY 2013-01-12 19:42:39 +01:00
Szabolcs Nagy
d650631dad add SWAP_FLAG_DISCARD to sys/swap.h 2013-01-12 19:42:39 +01:00
Szabolcs Nagy
645c6d99a5 add mount flags to sys/mount.h
added various MS_*, MNT_*, UMOUNT_* flags following the linux
headers, with one exception: MS_NOUSER is defined as (1U<<31)
instead of (1<<31) which invokes undefined behaviour

the S_* flags were removed following glibc
2013-01-12 19:42:39 +01:00
Szabolcs Nagy
48854dffdb add IN_EXCL_UNLINK to sys/inotify.h 2013-01-12 19:42:39 +01:00
Szabolcs Nagy
ada88f6178 add EPOLLWAKEUP flag to sys/epoll.h 2013-01-12 19:42:39 +01:00
Szabolcs Nagy
c7351ffe9b add RB_SW_SUSPEND and RB_KEXEC to sys/reboot.h
using the glibc names for the magic constants of the linux reboot syscall
2013-01-12 19:42:39 +01:00
Szabolcs Nagy
2010361663 add missing ptrace requests and options to sys/ptrace.h 2013-01-12 19:42:39 +01:00
Szabolcs Nagy
f13a478860 add missing protocol families to sys/socket.h
missing protocol families based on current linux headers:
PF_RDS, PF_LLC, PF_CAN, PF_TIPC, PF_NFC
2013-01-12 19:42:38 +01:00
Rich Felker
2dec29741b fix another case of cloexec/nonblock flags not matching arch values 2013-01-10 17:57:30 -05:00
rofl0r
e895ddc0cd wait.h: add linux specific, thread-related waitpid() flags
these flags are needed in order to be able to handle lwp id's
which the kernel returns after clone() calls for new threads
via ptrace(PTRACE_GETEVENTMSG).

fortunately, they're the same for all archs and in the reserved
namespace.
2013-01-04 20:36:34 +01:00
Rich Felker
761ebe065c align EPOLL_* flags with fcntl O_* flag definitions, which vary by arch
the old definitions were wrong on some archs. actually, EPOLL_NONBLOCK
probably should not even be defined; it is not accepted by the kernel
and it's not clear to me whether it has any use at all, even if it did
work. this issue should be revisited at some point, but I'm leaving it
in place for now in case some applications reference it.
2012-12-27 20:44:44 -05:00
rofl0r
3159e2fc81 socket.h: add SO_(SND/RCV)BUFFORCE to generic block 2012-12-19 19:02:22 +01:00
Rich Felker
9cb589939c add some missing macros to sys/shm.h
these are not specified in the standard, but in the reserved
namespace, so there is no problem with defining them unconditionally.
2012-12-15 00:43:27 -05:00
Rich Felker
d50955620f add missing flags in sys/timerfd.h 2012-12-13 14:15:11 -05:00
Rich Felker
490d4a0e9e fix regressions in app compatibility from previous sys/ipc.h changes
despite glibc using __key and __seq rather than key and seq, some
applications, notably busybox, assume the names are key and seq unless
glibc is being used. and the names key and seq are really the ones
that _should_ be exposed when not attempting to present a
standards-conforming namespace; apps should not be using names that
begin with double-underscore. thus, the optimal fix is to use key and
seq as the actual names of the members when in bsd/gnu source profile,
and define macros for __key and __seq that redirect to plain key and
seq.
2012-12-10 21:36:12 -05:00
Rich Felker
baf246e559 syscall() declaration belongs in unistd.h, not sys/syscall.h
traditionally, both BSD and GNU systems have it this way.
sys/syscall.h is purely syscall number macros. presently glibc exposes
the syscall declaration in unistd.h only with _GNU_SOURCE, but that
does not reflect historical practice.
2012-12-10 16:40:45 -05:00
Rich Felker
d1b6fc6ecc fix names of ipc_perm __key/__seq elements
previously the names were exposed as key/seq with _GNU_SOURCE and
__ipc_perm_key/__ipc_perm/seq otherwise, whereas glibc always uses
__key and __seq for the names. thus, the old behavior never matched
glibc, and the new behavior always does, regardless of feature test
macros.

for now, i'm leaving the renaming here in sys/ipc.h where it's easy to
change globally for all archs, in case something turns out to be
wrong, but eventually the names could just be incorporated directly
into the bits headers for each arch and the renaming removed.
2012-12-06 16:52:09 -05:00
rofl0r
6fb88a955a add personality syscall 2012-12-06 21:01:06 +01:00
rofl0r
0182c287ca add struct msgbuf to sys/msg.h 2012-12-06 20:27:54 +01:00
rofl0r
f1bb78343a ipc.h: fix gnu aliases for key and seq in struct ipc_perm
the macro was the wrong way round, additionally GNU defines
__ prefixed versions, which are used by qemu.
2012-12-06 20:27:54 +01:00
rofl0r
7aec71c411 add obsolete futimesat()
this function is obsolete, however it's available as a syscall
and as such qemu userspace emulation tries to forward it to the
host kernel.
2012-12-06 20:27:54 +01:00
Rich Felker
769fd4ce20 feature test macros: make _GNU_SOURCE enable everything
previously, a few BSD features were enabled only by _BSD_SOURCE, not
by _GNU_SOURCE. since _BSD_SOURCE is default in the absence of other
feature test macros, this made adding _GNU_SOURCE to a project not a
purely additive feature test macro; it actually caused some features
to be suppressed.

most of the changes made by this patch actually bring musl in closer
alignment with the glibc behavior for _GNU_SOURCE. the only exceptions
are the added visibility of functions like strlcpy which were BSD-only
due to being disliked/rejected by glibc maintainers. here, I feel the
consistency of having _GNU_SOURCE mean "everything", and especially
the property of it being purely additive, are more valuable than
hiding functions which glibc does not have.
2012-12-03 16:57:01 -05:00
Rich Felker
b4d8a16c1a fix eventfd and inotify nonblock/cloexec flags to match arch values 2012-11-26 13:00:58 -05:00
Rich Felker
4b75f4ed8d make sys/procfs.h mostly work on most archs
these structures are purely for use by trace/debug tools and tools
working with core files. the definition of fpregset_t, which was
previously here, has been removed because it was wrong; fpregset_t
should be the type used in mcontext_t, not the type used in
ptrace/core stuff.
2012-11-25 22:28:18 -05:00
Rich Felker
0004ea613a fix breakage from introducing bits header for sys/io.h
apparently some other archs have sys/io.h and should not break just
because they don't have the x86 port io functions. provide a blank
bits/io.h everywhere for now.
2012-11-18 19:58:15 -05:00
Rich Felker
61aa6324af add port io functions to sys/io.h
based on proposal by Isaac Dunham. nonexistance of bits/io.h will
cause inclusion of sys/io.h to produce an error on archs that are not
supposed to have it. this is probably the desired behavior, but the
error message may be a bit unusual.
2012-11-18 19:31:58 -05:00
Rich Felker
d0197ff031 add cleaned-up sys/mtio.h
this is mostly junk, but a few programs with tape-drive support
unconditionally include it, and it might be useful.
2012-11-17 19:51:49 -05:00
Rich Felker
91738d0241 disable SO_REUSEPORT in sys/socket.h
although a number is reserved for it, this option is not implemented
on Linux and does not work. defining it causes some applications to
use it, and subsequently break due to its failure.
2012-11-15 19:16:10 -05:00
Rich Felker
32d6d77e54 fix numerous mips abi constant definition mismatches 2012-11-05 14:29:04 -05:00
Rich Felker
fc5f16d182 mips cache flush/ctl syscall support and header 2012-11-04 17:06:31 -05:00
Rich Felker
4eb4844b31 fix issues with wait constants in stdlib.h
the W* namespace is not reserved, so the nonstandard ones must be
moved under extension features. also WNOHANG and WUNTRACED were
missing.
2012-10-21 19:15:11 -04:00
Rich Felker
3609e019f3 always expose accept4
it will be in the next version of POSIX
2012-09-29 17:44:33 -04:00
Rich Felker
f600105eef LFS64 alias for prlimit
issue reported/requested by Justin Cormack
2012-09-21 04:05:01 -04:00
Rich Felker
662da62eb7 add clock_adjtime, remap_file_pages, and syncfs syscall wrappers
patch by Justin Cormack, with slight modification
2012-09-16 22:26:23 -04:00
Rich Felker
a660180c6a mincore syscall wrapper 2012-09-09 16:37:19 -04:00
Rich Felker
2416c63b81 fix up lfs64 junk for preadv/pwritev 2012-09-09 16:33:47 -04:00
Rich Felker
ea544bfe80 add preadv/pwritev syscall wrappers 2012-09-09 16:29:33 -04:00
Rich Felker
208eb584ef syscall organization overhaul
now public syscall.h only exposes __NR_* and SYS_* constants and the
variadic syscall function. no macros or inline functions, no
__syscall_ret or other internal details, no 16-/32-bit legacy syscall
renaming, etc. this logic has all been moved to src/internal/syscall.h
with the arch-specific parts in arch/$(ARCH)/syscall_arch.h, and the
amount of arch-specific stuff has been reduced to a minimum.

changes still need to be reviewed/double-checked. minimal testing on
i386 and mips has already been performed.
2012-09-08 22:43:14 -04:00
Rich Felker
6cf8bfdb64 add acct, accept4, setns, and dup3 syscalls (linux extensions)
based on patch by Justin Cormack
2012-09-08 20:22:08 -04:00
Rich Felker
455f96857f remove all remaining redundant __restrict/__inline/_Noreturn defs 2012-09-08 17:14:52 -04:00
Rich Felker
b7afd7a7ec sysmacros major/minor: result should have type unsigned int, not dev_t 2012-09-08 02:42:27 -04:00
Rich Felker
231b9d1880 add timerfd interfaces (untested) 2012-09-08 00:21:02 -04:00
Rich Felker
c1a9658bd1 default features: make musl usable without feature test macros
the old behavior of exposing nothing except plain ISO C can be
obtained by defining __STRICT_ANSI__ or using a compiler option (such
as -std=c99) that predefines it. the new default featureset is POSIX
with XSI plus _BSD_SOURCE. any explicit feature test macros will
inhibit the default.

installation docs have also been updated to reflect this change.
2012-09-07 23:13:55 -04:00
Rich Felker
400c5e5c83 use restrict everywhere it's required by c99 and/or posix 2008
to deal with the fact that the public headers may be used with pre-c99
compilers, __restrict is used in place of restrict, and defined
appropriately for any supported compiler. we also avoid the form
[restrict] since older versions of gcc rejected it due to a bug in the
original c99 standard, and instead use the form *restrict.
2012-09-06 22:44:55 -04:00
Rich Felker
fb247fafa0 avoid "inline" in public headers for strict c89 compatibility
while musl itself requires a c99 compiler, some applications insist on
being compiled with c89 compilers, and use of "inline" in the headers
was breaking them. much of this had been avoided already by just
skipping the inline keyword in pre-c99 compilers or modes, but this
new unified solution is cleaner and may/should result in better code
generation in the default gcc configuration.
2012-09-02 12:46:06 -04:00
Rich Felker
7dba0494e8 type exposure fixes in sys/sem.h 2012-08-24 17:01:17 -04:00
Rich Felker
7650390de8 add missing xattr functions
not sure why these were originally omitted..
2012-08-15 08:31:44 -04:00
Rich Felker
7fee5f9606 fix socket.h on mips
why does mips have to be gratuitously incompatible in every possible
imaginable way?
2012-08-05 14:23:40 -04:00
Rich Felker
d426b04533 add ioperm/iopl syscalls
based on patches by orc and Isaac Dunham, with some fixes. sys/io.h
exists and contains prototypes for these functions regardless of
whether the target arch has them; this is a bit unorthodox but I don't
think it will break anything. the function definitions do not exist
unless the appropriate SYS_* syscall number macro is defined, which
should make sure configure scripts looking for these functions don't
find them on other systems.

presently, sys/io.h does not have the inb/outb/etc. port io
macros/functions. I'd be surprised if ioperm/iopl are useful without
them, so they probably need to be added at some point in appropriate
bits/io.h files...
2012-07-23 16:54:53 -04:00
Rich Felker
207460d097 add extended attributes syscalls
based on patch by orc and Isaac Dunham, with some fixes.
2012-07-23 16:39:44 -04:00
Rich Felker
96107564e2 workaround another sendmsg kernel bug on 64-bit machines
the kernel wrongly expects the cmsg length field to be size_t instead
of socklen_t. in order to work around the issue, we have to impose a
length limit and copy to a local buffer. the length limit should be
more than sufficient for any real-world use; these headers are only
used for passing file descriptors and permissions between processes
over unix sockets.
2012-07-12 21:37:54 -04:00
Rich Felker
9cf9c39e48 add process_vm_readv and process_vm_writev syscall wrappers
based on a patch submitted by Kristian L. <email@thexception.net>
2012-06-23 21:38:47 -04:00
Rich Felker
57d5fff5f7 header file fixes: multiple include guard consistency and correctness
one file was reusing another file's macro name, and many had
inconsistent underscores and application of SYS prefix, etc.

patch by Szabolcs Nagy (nsz)
2012-06-15 21:52:53 -04:00
Rich Felker
1429ce9ba2 fix sysinfo, try 2. it seems to work this time. 2012-06-07 23:06:04 -04:00
Rich Felker
e86b18a63e sysinfo struct was utter nonsense; no idea where it came from.
this broke the busybox "free" utility (memory reporting) and possibly
other things like uptime.
2012-06-07 22:58:19 -04:00
Rich Felker
3b94daba71 _GNU_SOURCE is supposed to imply _LARGEFILE64_SOURCE
this is ugly and stupid, but now that the *64 symbol names exist, a
lot of broken GNU software detects them in configure, then either
breaks during build due to missing off64_t definition, or attempts to
compile without function declarations/prototypes. "fixing" it here is
easier than telling everyone to add yet another feature test macro to
their builds.
2012-06-04 08:03:56 -04:00
Rich Felker
671ffab776 various header cleanups, some related to _BSD_SOURCE addition
there is no reason to avoid multiple identical macro definitions; this
is perfectly legal C, and even with the maximal warning options
enabled, gcc does not issue any warning for it.
2012-05-22 22:04:55 -04:00
Rich Felker
419ae6d5c9 support _BSD_SOURCE feature test macro
patch by Isaac Dunham. matched closely (maybe not exact) to glibc's
idea of what _BSD_SOURCE should make visible.
2012-05-22 21:52:08 -04:00
Rich Felker
bfb29b666e fix missing parens in bit op macros (param.h) 2012-05-10 12:10:44 -04:00
Rich Felker
2e41887f54 and another bug in setbit, etc. macros.. 2012-05-10 11:59:07 -04:00
Rich Felker
e0ff0d34dc fix typo in sys/param.h that broke setbit, etc. macros
this is all junk, but some programs use it.
2012-05-10 11:55:16 -04:00
Rich Felker
f0b85fd926 add *64 junk for sys/*.h headers 2012-05-04 00:31:25 -04:00
Rich Felker
ba6a9e7734 legacy junk compatibility grab-bag
- add the rest of the junk traditionally in sys/param.h
- add prototypes for some nonstandard functions
- add _GNU_SOURCE to their source files so the compiler can check proto
2012-04-18 12:22:24 -04:00
Rich Felker
570edb19d1 fix typo in inotify.h 2012-02-07 22:48:58 -05:00
Rich Felker
147f355cb6 apparently gnu caddr_t is supposed to be char *, not unsigned long
this type should never be used anyway, but some old junk uses it..
2012-02-01 14:12:19 -05:00
Rich Felker
4619901ec4 add linux setfs[ug]id syscall wrappers
patch by Jeremy Huntwork
2012-01-28 21:09:50 -05:00
Rich Felker
c3db56c4cb remove useless "extern" keywords in headers 2012-01-26 10:53:37 -05:00
Rich Felker
6a193804a8 add MIN/MAX macros to sys/param.h
this is a nonstandard junk header anyway, so just do what apps expect..
2012-01-24 22:51:27 -05:00
Rich Felker
477e72ac4a add legacy futimes and lutimes functions
based on patch by sh4rm4. these functions are deprecated; futimens and
utimensat should be used instead in new programs.
2012-01-24 19:50:44 -05:00
Rich Felker
26f38328d6 add prlimit syscall wrapper 2012-01-20 22:10:47 -05:00
Rich Felker
3ed8c9f2df fix all missing instances of __cplusplus checks/extern "C" in headers
patch by Arvid Picciani (aep)
2011-11-10 20:40:06 -05:00
Rich Felker
03860303c2 fix some details in ugly stuff that doesn't belong in libc
patches by sh4rm4, presumably needed to make gdb or some similar junk
happy...
2011-10-17 12:23:04 -04:00
Rich Felker
fd142e5ec4 cleanup various minor issues reported by nsz
the changes to syscall_ret are mostly no-ops in the generated code,
just cleanup of type issues and removal of some implementation-defined
behavior. the one exception is the change in the comparison value,
which is fixed so that 0xf...f000 (which in principle could be a valid
return value for mmap, although probably never in reality) is not
treated as an error return.
2011-09-26 00:59:28 -04:00
Rich Felker
c41a76f58c FD_ISSET must return an int. this is the easiest way.
casting to int would not be correct because high bits could be lost.
mapping the high bits down onto low bits would be costlier in the
common case where the result is just used in a conditional. changing
the type of the bit array elements to int would permute the order of
the bit array on 64-bit big endian systems, so that's not an option
either.
2011-09-23 22:24:33 -04:00
Rich Felker
1587224ed6 sys/user.h may need stdint.h 2011-09-23 14:24:57 -04:00
Rich Felker
fd9e01e92a fix some header typos 2011-09-20 20:02:48 -04:00
Rich Felker
32b82cf5cd fix the fsid_t structure to match name of __val
this is a case of poorly written man pages not matching the actual
implementation, and why i hate implementing nonstandard interfaces
with no actual documentation of how they're intended to work.
2011-09-20 11:16:27 -04:00
Rich Felker
114c80f141 fix the definition of struct statvfs to match lsb abi
at the same time, make struct statfs match the traditional definition
and make it more useful, especially the fsid_t stuff.
2011-09-19 23:35:48 -04:00
Rich Felker
53431b091b fix broken multi-inclusion guard in sys/reg.h 2011-09-19 11:56:09 -04:00
Rich Felker
b0c088ee55 cleanup more bits cruft (sysmacros and socket) 2011-09-18 16:34:13 -04:00
Rich Felker
71f7a3c2ce implement ptrace syscall wrapper (untested) 2011-09-15 13:03:13 -04:00
Rich Felker
1f5ff26cd7 fix broken FD_* macros on 64-bit targets
1 is too small if int is 32-bit but unsigned long is 64-bit. be
explicit and use 1UL.
2011-08-27 19:42:13 -04:00
Rich Felker
6b1d3817cf add missing signalfd flags 2011-07-09 18:06:59 -04:00
Rich Felker
5a2e74ebd2 copy-paste error in prctl.h 2011-06-18 07:39:05 -04:00
Rich Felker
7f5471529c fix some struct padding to match LSB/glibc ABI where it may be helpful 2011-06-16 17:11:35 -04:00
Rich Felker
15b77d52c9 eventfd syscall wrapper and read/write wrappers 2011-05-08 00:03:00 -04:00
Rich Felker
4b5f054098 move wait.h macros out of bits. they do not vary. 2011-04-21 14:27:28 -04:00
Rich Felker
f492c95401 include signal.h to avoid thorny __sigcontext/sigcontext issues
this is explicitly allowed by POSIX
2011-04-21 14:21:57 -04:00
Rich Felker
33a3f202d1 add useless type fd_mask. it's in the reserved namespace. 2011-04-14 16:23:31 -04:00
Rich Felker
07e865cc5a numerous fixes to sysv ipc
some of these definitions were just plain wrong, others based on
outdated ancient "non-64" versions of the kernel interface.

as much as possible has now been moved out of bits/*

these changes break abi (the old abi for these functions was wrong),
but since they were not working anyway it can hardly matter.
2011-04-13 16:45:43 -04:00
Rich Felker
45a3219944 fix typos on RLIM_NLIMITS, remove _GNU_SOURCE test for it
RLIM_* is in the reserved namespace for this header
2011-04-13 13:22:19 -04:00
Rich Felker
cac7d837cc fix and cleanup suseconds_t/timeval stuff (broken on 64-bit)
trash in the upper 32 bits was making the kernel sleep forever in
select on 64-bit systems.
2011-04-13 13:16:49 -04:00
Rich Felker
7ecab79f58 add some traditional aliases to stat.h 2011-04-12 12:01:20 -04:00
Rich Felker
209f2bbd95 add missing rlimit macros 2011-04-12 11:50:14 -04:00
Rich Felker
28bde3b787 cleanup types stuff in headers, fix missing u_int*_t in sys/types.h 2011-04-11 10:38:00 -04:00
Rich Felker
2555fe1b6d add some ugly legacy type names in sys/types.h (u_char etc.) 2011-04-10 22:47:43 -04:00
Rich Felker
691b20bec0 add legacy BSD-style timer*() macros in sys/time.h 2011-04-10 22:46:46 -04:00
Rich Felker
4a19634f07 add missing UTIME_* macros in sys/stat.h 2011-04-10 18:32:59 -04:00
Rich Felker
095ad15673 fix typo in sys/msg.h 2011-04-06 17:50:38 -04:00
Rich Felker
104d013441 fix incorrect (and conflicting on LP64 archs) types for sysv ipc msgq functions 2011-04-06 00:02:20 -04:00
Rich Felker
8b61c81693 alternate name for syslog.h 2011-04-05 12:13:54 -04:00
Rich Felker
685e40bb09 syscall overhaul part two - unify public and internal syscall interface
with this patch, the syscallN() functions are no longer needed; a
variadic syscall() macro allows syscalls with anywhere from 0 to 6
arguments to be made with a single macro name. also, manually casting
each non-integer argument with (long) is no longer necessary; the
casts are hidden in the macros.

some source files which depended on being able to define the old macro
SYSCALL_RETURNS_ERRNO have been modified to directly use __syscall()
instead of syscall(). references to SYSCALL_SIGSET_SIZE and SYSCALL_LL
have also been changed.

x86_64 has not been tested, and may need a follow-up commit to fix any
minor bugs/oversights.
2011-03-19 21:36:10 -04:00
Rich Felker
b0e83133e2 add some ioctl stuff to sys/mount.h 2011-03-19 18:58:32 -04:00
Rich Felker
d00ff2950e overhaul syscall interface
this commit shuffles around the location of syscall definitions so
that we can make a syscall() library function with both SYS_* and
__NR_* style syscall names available to user applications, provides
the syscall() library function, and optimizes the code that performs
the actual inline syscalls in the library itself.

previously on i386 when built as PIC (shared library), syscalls were
incurring bus lock (lock prefix) overhead at entry and exit, due to
the way the ebx register was being loaded (xchg instruction with a
memory operand). now the xchg takes place between two registers.

further cleanup to arch/$(ARCH)/syscall.h is planned.
2011-03-19 18:51:42 -04:00
Rich Felker
f5ba2bc9ca various legacy and linux-specific stuff
this commit is part of an effort to make more of busybox work
out-of-the-box.
2011-03-18 21:52:26 -04:00
Rich Felker
b446c55b6f remove some old cruft from sys/types.h 2011-03-14 11:49:17 -04:00
Rich Felker
ac12eb91bd fcntl.h should make availabel the mode constants from sys/stat.h
also remove some legacy nonsense that crept in.
2011-03-08 12:35:35 -05:00
Rich Felker
a53d2f3425 namespace cleanup in sys/mman.h 2011-03-03 00:32:15 -05:00
Rich Felker
eda8e9da76 implement futimens and utimensat 2011-02-27 03:48:57 -05:00
Rich Felker
b1b465c438 cleanup namespace in sys/time.h 2011-02-27 03:48:19 -05:00
Rich Felker
f552c792c7 include sys/sysmacros.h from sys/types.h when _GNU_SOURCE is defined 2011-02-20 16:34:10 -05:00
Rich Felker
b1b752372f fix typo in inotify structure 2011-02-20 16:21:39 -05:00
Rich Felker
2b43ef8fc7 make sys/param.h not depend on PATH_MAX and NAME_MAX
this is a nonstandard header used only by backwards programs, but for
some reason it's extremely popular. the recent namespace cleanup fixes
broke it, because PATH_MAX and NAME_MAX will not be defined unless an
approriate feature test macro has been defined. moreover, it's too
late to just #define _GNU_SOURCE in param.h, since limits.h may have
already been included.

let's just hard-code standard values and be done with it.
2011-02-20 00:28:10 -05:00
Rich Felker
095a5ae6f2 add syscall wrappers for inotify 2011-02-19 02:52:29 -05:00
Rich Felker
52874c82a8 prototype wait3 and wait4 2011-02-19 02:26:11 -05:00
Rich Felker
d5ca067c7b add portable lchown (trivial to support and a few ancient things want it..) 2011-02-17 23:13:46 -05:00
Rich Felker
e882756311 reorganize pthread data structures and move the definitions to alltypes.h
this allows sys/types.h to provide the pthread types, as required by
POSIX. this design also facilitates forcing ABI-compatible sizes in
the arch-specific alltypes.h, while eliminating the need for
developers changing the internals of the pthread types to poke around
with arch-specific headers they may not be able to test.
2011-02-17 17:16:20 -05:00
Rich Felker
74eea628cf extensive header cleanup for standards conformance & correctness
thanks to Peter Mazinger (psm) for pointing many of these issues out
and submitting a patch on which this commit is loosely based
2011-02-14 18:41:25 -05:00
Rich Felker
0b44a0315b initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00