Age | Commit message (Collapse) | Author | Files | Lines |
|
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.
|
|
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.
|
|
patch by Isaac Dunham. matched closely (maybe not exact) to glibc's
idea of what _BSD_SOURCE should make visible.
|
|
|
|
|
|
this is all junk, but some programs use it.
|
|
|
|
- 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
|
|
|
|
this type should never be used anyway, but some old junk uses it..
|
|
patch by Jeremy Huntwork
|
|
|
|
this is a nonstandard junk header anyway, so just do what apps expect..
|
|
based on patch by sh4rm4. these functions are deprecated; futimens and
utimensat should be used instead in new programs.
|
|
|
|
patch by Arvid Picciani (aep)
|
|
patches by sh4rm4, presumably needed to make gdb or some similar junk
happy...
|
|
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.
|
|
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.
|
|
|
|
|
|
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.
|
|
at the same time, make struct statfs match the traditional definition
and make it more useful, especially the fsid_t stuff.
|
|
|
|
|
|
|
|
1 is too small if int is 32-bit but unsigned long is 64-bit. be
explicit and use 1UL.
|
|
|
|
|
|
|
|
|
|
|
|
this is explicitly allowed by POSIX
|
|
|
|
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.
|
|
RLIM_* is in the reserved namespace for this header
|
|
trash in the upper 32 bits was making the kernel sleep forever in
select on 64-bit systems.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
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.
|
|
this commit is part of an effort to make more of busybox work
out-of-the-box.
|