1. 29 10月, 2019 1 次提交
    • R
      add time64 symbol name redirects to public headers, under arch control · 1febd21d
      Rich Felker 提交于
      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.
      1febd21d
  2. 11 9月, 2019 1 次提交
  3. 15 8月, 2019 1 次提交
    • R
      remove sporadic server members from struct sched_param · 827aa8fb
      Rich Felker 提交于
      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.
      827aa8fb
  4. 29 9月, 2017 1 次提交
  5. 19 9月, 2016 1 次提交
    • R
      fix undefined behavior in sched.h cpu_set_t usage · 66570ec9
      Rich Felker 提交于
      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 *.
      66570ec9
  6. 10 6月, 2016 1 次提交
  7. 03 3月, 2016 1 次提交
    • N
      add sched_getcpu · 98d33573
      Nathan Zadoks 提交于
      This is a GNU extension, but a fairly minor one, for a system call that
      otherwise has no libc wrapper.
      98d33573
  8. 13 8月, 2014 1 次提交
  9. 31 5月, 2014 1 次提交
    • S
      add sched_{get,set}attr syscall numbers and SCHED_DEADLINE macro · fd9571e2
      Szabolcs Nagy 提交于
      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.
      fd9571e2
  10. 11 2月, 2014 1 次提交
  11. 11 8月, 2013 1 次提交
    • R
      add cpu affinity interfaces · eeb0328f
      Rich Felker 提交于
      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.
      eeb0328f
  12. 12 11月, 2012 1 次提交
    • R
      add support for thread scheduling (POSIX TPS option) · 1e21e78b
      Rich Felker 提交于
      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.
      1e21e78b
  13. 09 9月, 2012 1 次提交
  14. 08 9月, 2012 1 次提交
    • R
      default features: make musl usable without feature test macros · c1a9658b
      Rich Felker 提交于
      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.
      c1a9658b
  15. 30 4月, 2012 1 次提交
  16. 18 9月, 2011 1 次提交
    • R
      overhaul clone syscall wrapping · 3f72cdac
      Rich Felker 提交于
      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.
      3f72cdac
  17. 12 2月, 2011 1 次提交