summaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-04-01 22:35:20 -0400
committerRich Felker <dalias@aerifal.cx>2011-04-01 22:35:20 -0400
commit952987a0cb9b1973fdf23e05f8ddc6fe3c98fd68 (patch)
tree20888e580084e33ecfd132d598dbcfddda65630f /src/internal
parent4ae5e811f8d291a0df1418e1aae583161c142952 (diff)
downloadmusl-952987a0cb9b1973fdf23e05f8ddc6fe3c98fd68.tar.gz
musl-952987a0cb9b1973fdf23e05f8ddc6fe3c98fd68.tar.bz2
musl-952987a0cb9b1973fdf23e05f8ddc6fe3c98fd68.tar.xz
musl-952987a0cb9b1973fdf23e05f8ddc6fe3c98fd68.zip
reorganize the __libc structure for threaded performance issues
we want to keep atomically updated fields (locks and thread count) and really anything writable far away from frequently-needed function pointers. stuff some rarely-needed function pointers in between to pad, hopefully up to a cache line boundary.
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/libc.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/internal/libc.h b/src/internal/libc.h
index c83fcafe..60a25eff 100644
--- a/src/internal/libc.h
+++ b/src/internal/libc.h
@@ -5,20 +5,20 @@
#include <stdio.h>
struct __libc {
- void (*lock)(volatile int *);
+ int *(*errno_location)(void);
void (*cancelpt)(int);
+ void (*lock)(volatile int *);
+ void (*lockfile)(FILE *);
+ void (**tsd_keys)(void *);
+ void (*sigtimer)();
int (*atexit)(void (*)(void));
void (*fini)(void);
void (*ldso_fini)(void);
- int *(*errno_location)(void);
volatile int threads_minus_1;
+ int ofl_lock;
int (*rsyscall)(int, long, long, long, long, long, long);
- void (**tsd_keys)(void *);
void (*fork_handler)(int);
FILE *ofl_head;
- int ofl_lock;
- void (*lockfile)(FILE *);
- void (*sigtimer)();
};