aboutsummaryrefslogtreecommitdiff
path: root/include/sched.h (follow)
Commit message (Expand)AuthorAgeFilesLines
* prepare struct sched_param for change in time_t definition•••the time_t members in struct sched_param are just reserved space to preserve size and alignment. when time_t changes to 64-bit on 32-bit archs, this structure should not change. make definition conditional on _REDIR_TIME64 to match the size of the old time_t, which can be assumed to be long if _REDIR_TIME64 is defined. Rich Felker2019-10-281-0/+4
* add time64 symbol name redirects to public headers, under arch control•••a _REDIR_TIME64 macro is introduced, which the arch's alltypes.h is expected to define, to control redirection of symbol names for interfaces that involve time_t and derived types. this ensures that object files will only be linked to libc interfaces matching the ABI whose headers they were compiled against. along with time32 compat shims, which will be introduced separately, the redirection also makes it possible for a single libc (static or shared) to be used with object files produced with either the old (32-bit time_t) headers or the new ones after 64-bit time_t switchover takes place. mixing of such object files (or shared libraries) in the same program will also be possible, but must be done with care; ABI between libc and a consumer of the libc interfaces is guaranteed to match by the the symbol name redirection, but pairwise ABI between consumers of libc that define interfaces between each other in terms of time_t is not guaranteed to match. this change adds a dependency on an additional "GNU C" feature to the public headers for existing 32-bit archs, which is generally undesirable; however, the feature is one which glibc has depended on for a long time, and thus which any viable alternative compiler is going to need to provide. 64-bit archs are not affected, nor will future 32-bit archs be, regardless of whether they are "new" on the kernel side (e.g. riscv32) or just newly-added (e.g. a new sparc or xtensa port). the same applies to newly-added ABIs for existing machine-level archs. Rich Felker2019-10-281-0/+4
* sched.h: add CLONE_PIDFD from linux v5.2•••when set a pidfd is stored in parent_tidptr, see linux commit b3e5838252665ee4cfa76b82bdf1198dca81e5be clone: add CLONE_PIDFD Szabolcs Nagy2019-09-111-0/+1
* remove sporadic server members from struct sched_param•••these members are associated with an unsupported option group. with time_t changing size on 32-bit archs, all interfaces taking struct sched_param arguments would need redirection and compat shims in order to be able to continue offering these members, for no benefit. just convert them to reserved space instead. Rich Felker2019-08-141-4/+6
* fix use of memset without declaration in sched.h cpu set macros•••patch by Jörg Krause. Rich Felker2017-09-281-0/+1
* fix undefined behavior in sched.h cpu_set_t usage•••since cpu sets can be dynamically allocated and have variable size, accessing their contents via ->__bits is not valid; performing pointer arithmetic outside the range of the size of the declared __bits array results in undefined beahavior. instead, only use cpu_set_t for fixed-size cpu set objects (instantiated by the caller) and as an abstract pointer type for dynamically allocated ones. perform all accesses simply by casting the abstract pointer type cpuset_t * back to unsigned long *. Rich Felker2016-09-191-3/+3
* add CLONE_NEWCGROUP clone flag, new in linux v4.6•••flag for new cgroup namespace, added in linux commit 5e2bec7c2248ae27c5b16cd97215ae05c1d39179 Szabolcs Nagy2016-06-091-0/+1
* add sched_getcpu•••This is a GNU extension, but a fairly minor one, for a system call that otherwise has no libc wrapper. Nathan Zadoks2016-03-021-0/+1
* fix CPU_EQUAL macro in sched.hSzabolcs Nagy2014-08-131-1/+1
* add sched_{get,set}attr syscall numbers and SCHED_DEADLINE macro•••linux 3.14 introduced sched_getattr and sched_setattr syscalls in commit d50dde5a10f305253cbc3855307f608f8a3c5f73 and the related SCHED_DEADLINE scheduling policy in commit aab03e05e8f7e26f51dee792beddcb5cca9215a5 but struct sched_attr "extended scheduling parameters data structure" is not yet exported to userspace (necessary for using the syscalls) so related uapi definitions are not added yet. Szabolcs Nagy2014-05-301-0/+1
* fix signed and unsigned comparision in macros in public headers•••gcc -Wsign-compare warns about expanded macros that were defined in standard headers (before gcc 4.8) which can make builds fail that use -Werror. changed macros: WIFSIGNALED, __CPU_op_S Szabolcs Nagy2014-02-111-1/+1
* add cpu affinity interfaces•••this first commit just includes the CPU_* and sched_* interfaces, not the pthread_* interfaces, which may be added later. simple sanity-check testing has been done for the basic interfaces, but most of the macros have not yet been tested. Rich Felker2013-08-101-0/+61
* add support for thread scheduling (POSIX TPS option)•••linux's sched_* syscalls actually implement the TPS (thread scheduling) functionality, not the PS (process scheduling) functionality which the sched_* functions are supposed to have. omitting support for the PS option (and having the sched_* interfaces fail with ENOSYS rather than omitting them, since some broken software assumes they exist) seems to be the only conforming way to do this on linux. Rich Felker2012-11-111-0/+3
* add acct, accept4, setns, and dup3 syscalls (linux extensions)•••based on patch by Justin Cormack Rich Felker2012-09-081-0/+1
* 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. Rich Felker2012-09-071-0/+2
* add linux-specific unshare syscall wrapperRich Felker2012-04-291-0/+1
* overhaul clone syscall wrapping•••several things are changed. first, i have removed the old __uniclone function signature and replaced it with the "standard" linux __clone/clone signature. this was necessary to expose clone to applications anyway, and it makes it easier to port __clone to new archs, since it's now testable independently of pthread_create. secondly, i have removed all references to the ugly ldt descriptor structure (i386 only) from the c code and pthread structure. in places where it is needed, it is now created on the stack just when it's needed, in assembly code. thus, the i386 __clone function takes the desired thread pointer as its argument, rather than an ldt descriptor pointer, just like on all other sane archs. this should not affect applications since there is really no way an application can use clone with threads/tls in a way that doesn't horribly conflict with and clobber the underlying implementation's use. applications are expected to use clone only for creating actual processes, possibly with new namespace features and whatnot. Rich Felker2011-09-181-0/+27
* initial check-in, version 0.5.0Rich Felker2011-02-121-0/+37