mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 03:27:39 +00:00
Graduate some clock_gettime() constants to #define
- CLOCK_THREAD_CPUTIME_ID - CLOCK_PROCESS_CPUTIME_ID Cosmo now supports the above constants universally across supported OSes therefore it's now safe to let programs detect their presence w/ #ifdefs
This commit is contained in:
parent
c83ec5fdd9
commit
3de6632be6
4 changed files with 8 additions and 7 deletions
|
@ -402,8 +402,8 @@ arises in the fact that our Linux-flavored GCC and Clang toolchains
|
||||||
producing TLS instructions that use the %fs convention.
|
producing TLS instructions that use the %fs convention.
|
||||||
|
|
||||||
To solve these challenges, the `cosmocc` compiler will rewrite binary
|
To solve these challenges, the `cosmocc` compiler will rewrite binary
|
||||||
objects after they've been compiled by GCC, so that `%gs` register is
|
objects after they've been compiled by GCC, so that the `%gs` register
|
||||||
used, rather than `%fs`. Morphing x86-64 binaries after they've been
|
is used, rather than `%fs`. Morphing x86-64 binaries after they've been
|
||||||
compiled is normally difficult, due to the complexity of the machine
|
compiled is normally difficult, due to the complexity of the machine
|
||||||
instruction language. However GCC provides `-mno-tls-direct-seg-refs`
|
instruction language. However GCC provides `-mno-tls-direct-seg-refs`
|
||||||
which greatly reduces the complexity of this task. This flag forgoes
|
which greatly reduces the complexity of this task. This flag forgoes
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
* Thunks free() if it's linked, otherwise do nothing.
|
* Thunks free() if it's linked, otherwise do nothing.
|
||||||
*/
|
*/
|
||||||
void _weakfree(void *p) {
|
void _weakfree(void *p) {
|
||||||
if (_weaken(free)) {
|
if (_weaken(free))
|
||||||
_weaken(free)(p);
|
_weaken(free)(p);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,9 @@ extern const int CLOCK_UPTIME_PRECISE;
|
||||||
|
|
||||||
COSMOPOLITAN_C_END_
|
COSMOPOLITAN_C_END_
|
||||||
|
|
||||||
#define CLOCK_REALTIME 0
|
#define CLOCK_REALTIME 0
|
||||||
#define CLOCK_MONOTONIC CLOCK_MONOTONIC
|
#define CLOCK_MONOTONIC CLOCK_MONOTONIC
|
||||||
|
#define CLOCK_PROCESS_CPUTIME_ID CLOCK_PROCESS_CPUTIME_ID
|
||||||
|
#define CLOCK_THREAD_CPUTIME_ID CLOCK_THREAD_CPUTIME_ID
|
||||||
|
|
||||||
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_CLOCK_H_ */
|
#endif /* COSMOPOLITAN_LIBC_SYSV_CONSTS_CLOCK_H_ */
|
||||||
|
|
|
@ -118,7 +118,7 @@ void _pthread_decimate(bool annihilation_only) {
|
||||||
if (status != kPosixThreadZombie)
|
if (status != kPosixThreadZombie)
|
||||||
break; // zombies only exist at the end of the linked list
|
break; // zombies only exist at the end of the linked list
|
||||||
if (atomic_load_explicit(&pt->tib->tib_tid, memory_order_acquire))
|
if (atomic_load_explicit(&pt->tib->tib_tid, memory_order_acquire))
|
||||||
continue; // undead thread should that'll stop existing soon
|
continue; // undead thread that should stop existing soon
|
||||||
dll_remove(&_pthread_list, e);
|
dll_remove(&_pthread_list, e);
|
||||||
dll_make_first(&list, e);
|
dll_make_first(&list, e);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue