1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-02-04 17:15:50 +00:00

1. Retire macro SCLASS, instead simply use language keyword and

put variables in thr_init.c.
2. Hide all global symbols which won't be exported.
This commit is contained in:
David Xu 2005-12-21 03:14:06 +00:00
parent 52b321acb3
commit cf905a1575
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=153593
2 changed files with 123 additions and 108 deletions

View File

@ -69,6 +69,58 @@
#include "libc_private.h" #include "libc_private.h"
#include "thr_private.h" #include "thr_private.h"
void *_usrstack;
struct pthread *_thr_initial;
int _thr_scope_system;
int _libthr_debug;
int _thread_event_mask;
struct pthread *_thread_last_event;
pthreadlist _thread_list = TAILQ_HEAD_INITIALIZER(_thread_list);
pthreadlist _thread_gc_list = TAILQ_HEAD_INITIALIZER(_thread_gc_list);
int _thread_active_threads = 1;
atfork_head _thr_atfork_list = TAILQ_HEAD_INITIALIZER(_thr_atfork_list);
umtx_t _thr_atfork_lock;
struct pthread_attr _pthread_attr_default = {
.sched_policy = SCHED_RR,
.sched_inherit = 0,
.sched_interval = TIMESLICE_USEC,
.prio = THR_DEFAULT_PRIORITY,
.suspend = THR_CREATE_RUNNING,
.flags = 0,
.arg_attr = NULL,
.cleanup_attr = NULL,
.stackaddr_attr = NULL,
.stacksize_attr = THR_STACK_DEFAULT,
.guardsize_attr = 0
};
struct pthread_mutex_attr _pthread_mutexattr_default = {
.m_type = PTHREAD_MUTEX_DEFAULT,
.m_protocol = PTHREAD_PRIO_NONE,
.m_ceiling = 0,
.m_flags = 0
};
/* Default condition variable attributes: */
struct pthread_cond_attr _pthread_condattr_default = {
.c_pshared = PTHREAD_PROCESS_PRIVATE,
.c_clockid = CLOCK_REALTIME
};
pid_t _thr_pid;
int _thr_guard_default;
int _thr_stack_default = THR_STACK_DEFAULT;
int _thr_stack_initial = THR_STACK_INITIAL;
int _thr_page_size;
int _gc_count;
umtx_t _mutex_static_lock;
umtx_t _cond_static_lock;
umtx_t _rwlock_static_lock;
umtx_t _keytable_lock;
umtx_t _thr_list_lock;
umtx_t _thr_event_lock;
int __pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *); int __pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *);
int __pthread_mutex_lock(pthread_mutex_t *); int __pthread_mutex_lock(pthread_mutex_t *);
int __pthread_mutex_trylock(pthread_mutex_t *); int __pthread_mutex_trylock(pthread_mutex_t *);

View File

@ -55,16 +55,9 @@
#include "thr_umtx.h" #include "thr_umtx.h"
#include "thread_db.h" #include "thread_db.h"
/* #define __hidden __attribute__((visibility("hidden")))
* Evaluate the storage class specifier. typedef TAILQ_HEAD(pthreadlist, pthread) pthreadlist;
*/ typedef TAILQ_HEAD(atfork_head, pthread_atfork) atfork_head;
#ifdef GLOBAL_PTHREAD_PRIVATE
#define SCLASS
#define SCLASS_PRESET(x...) = x
#else
#define SCLASS extern
#define SCLASS_PRESET(x...)
#endif
/* Signal to do cancellation */ /* Signal to do cancellation */
#define SIGCANCEL 32 #define SIGCANCEL 32
@ -588,91 +581,61 @@ extern int __isthreaded;
* Global variables for the pthread kernel. * Global variables for the pthread kernel.
*/ */
SCLASS void *_usrstack SCLASS_PRESET(NULL); extern void *_usrstack __hidden;
SCLASS struct pthread *_thr_initial SCLASS_PRESET(NULL); extern struct pthread *_thr_initial __hidden;
SCLASS int _thr_scope_system SCLASS_PRESET(0); extern int _thr_scope_system __hidden;
/* For debugger */ /* For debugger */
SCLASS int _libthr_debug SCLASS_PRESET(0); extern int _libthr_debug;
SCLASS int _thread_event_mask SCLASS_PRESET(0); extern int _thread_event_mask;
SCLASS struct pthread *_thread_last_event; extern struct pthread *_thread_last_event;
/* List of all threads: */ /* List of all threads: */
SCLASS TAILQ_HEAD(, pthread) _thread_list extern pthreadlist _thread_list;
SCLASS_PRESET(TAILQ_HEAD_INITIALIZER(_thread_list));
/* List of threads needing GC: */ /* List of threads needing GC: */
SCLASS TAILQ_HEAD(, pthread) _thread_gc_list extern pthreadlist _thread_gc_list __hidden;
SCLASS_PRESET(TAILQ_HEAD_INITIALIZER(_thread_gc_list));
SCLASS int _thread_active_threads SCLASS_PRESET(1); extern int _thread_active_threads;
extern atfork_head _thr_atfork_list __hidden;
SCLASS TAILQ_HEAD(atfork_head, pthread_atfork) _thr_atfork_list; extern umtx_t _thr_atfork_lock __hidden;
SCLASS umtx_t _thr_atfork_lock;
/* Default thread attributes: */ /* Default thread attributes: */
SCLASS struct pthread_attr _pthread_attr_default extern struct pthread_attr _pthread_attr_default __hidden;
SCLASS_PRESET({
.sched_policy = SCHED_RR,
.sched_inherit = 0,
.sched_interval = TIMESLICE_USEC,
.prio = THR_DEFAULT_PRIORITY,
.suspend = THR_CREATE_RUNNING,
.flags = 0,
.arg_attr = NULL,
.cleanup_attr = NULL,
.stackaddr_attr = NULL,
.stacksize_attr = THR_STACK_DEFAULT,
.guardsize_attr = 0
});
/* Default mutex attributes: */ /* Default mutex attributes: */
SCLASS struct pthread_mutex_attr _pthread_mutexattr_default extern struct pthread_mutex_attr _pthread_mutexattr_default __hidden;
SCLASS_PRESET({
.m_type = PTHREAD_MUTEX_DEFAULT,
.m_protocol = PTHREAD_PRIO_NONE,
.m_ceiling = 0,
.m_flags = 0
});
/* Default condition variable attributes: */ /* Default condition variable attributes: */
SCLASS struct pthread_cond_attr _pthread_condattr_default extern struct pthread_cond_attr _pthread_condattr_default __hidden;
SCLASS_PRESET({
.c_pshared = PTHREAD_PROCESS_PRIVATE,
.c_clockid = CLOCK_REALTIME
});
SCLASS pid_t _thr_pid SCLASS_PRESET(0); extern pid_t _thr_pid __hidden;
SCLASS int _thr_guard_default; extern int _thr_guard_default __hidden;
SCLASS int _thr_stack_default SCLASS_PRESET(THR_STACK_DEFAULT); extern int _thr_stack_default __hidden;
SCLASS int _thr_stack_initial SCLASS_PRESET(THR_STACK_INITIAL); extern int _thr_stack_initial __hidden;
SCLASS int _thr_page_size; extern int _thr_page_size __hidden;
/* Garbage thread count. */ /* Garbage thread count. */
SCLASS int _gc_count SCLASS_PRESET(0); extern int _gc_count __hidden;
SCLASS umtx_t _mutex_static_lock; extern umtx_t _mutex_static_lock __hidden;
SCLASS umtx_t _cond_static_lock; extern umtx_t _cond_static_lock __hidden;
SCLASS umtx_t _rwlock_static_lock; extern umtx_t _rwlock_static_lock __hidden;
SCLASS umtx_t _keytable_lock; extern umtx_t _keytable_lock __hidden;
SCLASS umtx_t _thr_list_lock; extern umtx_t _thr_list_lock __hidden;
SCLASS umtx_t _thr_event_lock; extern umtx_t _thr_event_lock __hidden;
/* Undefine the storage class and preset specifiers: */
#undef SCLASS
#undef SCLASS_PRESET
/* /*
* Function prototype definitions. * Function prototype definitions.
*/ */
__BEGIN_DECLS __BEGIN_DECLS
int _thr_setthreaded(int); int _thr_setthreaded(int) __hidden;
int _mutex_cv_lock(pthread_mutex_t *); int _mutex_cv_lock(pthread_mutex_t *) __hidden;
int _mutex_cv_unlock(pthread_mutex_t *); int _mutex_cv_unlock(pthread_mutex_t *) __hidden;
void _mutex_notify_priochange(struct pthread *, struct pthread *, int); void _mutex_notify_priochange(struct pthread *, struct pthread *, int) __hidden;
int _mutex_reinit(pthread_mutex_t *); int _mutex_reinit(pthread_mutex_t *) __hidden;
void _mutex_fork(struct pthread *curthread); void _mutex_fork(struct pthread *curthread) __hidden;
void _mutex_unlock_private(struct pthread *); void _mutex_unlock_private(struct pthread *) __hidden;
void _libpthread_init(struct pthread *); void _libpthread_init(struct pthread *) __hidden;
void *_pthread_getspecific(pthread_key_t); void *_pthread_getspecific(pthread_key_t);
int _pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *); int _pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *);
int _pthread_cond_destroy(pthread_cond_t *); int _pthread_cond_destroy(pthread_cond_t *);
@ -702,41 +665,41 @@ void _pthread_testcancel(void);
void _pthread_yield(void); void _pthread_yield(void);
void _pthread_cleanup_push(void (*routine) (void *), void *routine_arg); void _pthread_cleanup_push(void (*routine) (void *), void *routine_arg);
void _pthread_cleanup_pop(int execute); void _pthread_cleanup_pop(int execute);
struct pthread *_thr_alloc(struct pthread *); struct pthread *_thr_alloc(struct pthread *) __hidden;
void _thread_exit(char *, int, char *) __dead2; void _thread_exit(char *, int, char *) __hidden __dead2;
void _thr_exit_cleanup(void); void _thr_exit_cleanup(void) __hidden;
int _thr_ref_add(struct pthread *, struct pthread *, int); int _thr_ref_add(struct pthread *, struct pthread *, int) __hidden;
void _thr_ref_delete(struct pthread *, struct pthread *); void _thr_ref_delete(struct pthread *, struct pthread *) __hidden;
int _thr_find_thread(struct pthread *, struct pthread *, int); int _thr_find_thread(struct pthread *, struct pthread *, int) __hidden;
void _thr_rtld_init(void); void _thr_rtld_init(void) __hidden;
void _thr_rtld_fini(void); void _thr_rtld_fini(void) __hidden;
int _thr_stack_alloc(struct pthread_attr *); int _thr_stack_alloc(struct pthread_attr *) __hidden;
void _thr_stack_free(struct pthread_attr *); void _thr_stack_free(struct pthread_attr *) __hidden;
void _thr_free(struct pthread *, struct pthread *); void _thr_free(struct pthread *, struct pthread *) __hidden;
void _thr_gc(struct pthread *); void _thr_gc(struct pthread *) __hidden;
void _thread_cleanupspecific(void); void _thread_cleanupspecific(void) __hidden;
void _thread_dump_info(void); void _thread_dump_info(void) __hidden;
void _thread_printf(int, const char *, ...); void _thread_printf(int, const char *, ...) __hidden;
void _thr_spinlock_init(void); void _thr_spinlock_init(void) __hidden;
int _thr_cancel_enter(struct pthread *); int _thr_cancel_enter(struct pthread *) __hidden;
void _thr_cancel_leave(struct pthread *, int); void _thr_cancel_leave(struct pthread *, int) __hidden;
void _thr_signal_block(struct pthread *); void _thr_signal_block(struct pthread *) __hidden;
void _thr_signal_unblock(struct pthread *); void _thr_signal_unblock(struct pthread *) __hidden;
void _thr_signal_init(void); void _thr_signal_init(void) __hidden;
void _thr_signal_deinit(void); void _thr_signal_deinit(void) __hidden;
int _thr_send_sig(struct pthread *, int sig); int _thr_send_sig(struct pthread *, int sig) __hidden;
void _thr_list_init(void); void _thr_list_init(void) __hidden;
void _thr_hash_add(struct pthread *); void _thr_hash_add(struct pthread *) __hidden;
void _thr_hash_remove(struct pthread *); void _thr_hash_remove(struct pthread *) __hidden;
struct pthread *_thr_hash_find(struct pthread *); struct pthread *_thr_hash_find(struct pthread *) __hidden;
void _thr_link(struct pthread *curthread, struct pthread *thread); void _thr_link(struct pthread *curthread, struct pthread *thread) __hidden;
void _thr_unlink(struct pthread *curthread, struct pthread *thread); void _thr_unlink(struct pthread *curthread, struct pthread *thread) __hidden;
void _thr_suspend_check(struct pthread *curthread); void _thr_suspend_check(struct pthread *curthread) __hidden;
void _thr_assert_lock_level(void) __dead2; void _thr_assert_lock_level(void) __hidden __dead2;
void _thr_timer_init(void); void _thr_timer_init(void) __hidden;
void _thr_report_creation(struct pthread *curthread, void _thr_report_creation(struct pthread *curthread,
struct pthread *newthread); struct pthread *newthread) __hidden;
void _thr_report_death(struct pthread *curthread); void _thr_report_death(struct pthread *curthread) __hidden;
void _thread_bp_create(void); void _thread_bp_create(void);
void _thread_bp_death(void); void _thread_bp_death(void);