提交 952987a0 编写于 作者: R Rich Felker

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.
上级 4ae5e811
...@@ -5,20 +5,20 @@ ...@@ -5,20 +5,20 @@
#include <stdio.h> #include <stdio.h>
struct __libc { struct __libc {
void (*lock)(volatile int *); int *(*errno_location)(void);
void (*cancelpt)(int); void (*cancelpt)(int);
void (*lock)(volatile int *);
void (*lockfile)(FILE *);
void (**tsd_keys)(void *);
void (*sigtimer)();
int (*atexit)(void (*)(void)); int (*atexit)(void (*)(void));
void (*fini)(void); void (*fini)(void);
void (*ldso_fini)(void); void (*ldso_fini)(void);
int *(*errno_location)(void);
volatile int threads_minus_1; volatile int threads_minus_1;
int ofl_lock;
int (*rsyscall)(int, long, long, long, long, long, long); int (*rsyscall)(int, long, long, long, long, long, long);
void (**tsd_keys)(void *);
void (*fork_handler)(int); void (*fork_handler)(int);
FILE *ofl_head; FILE *ofl_head;
int ofl_lock;
void (*lockfile)(FILE *);
void (*sigtimer)();
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册