]> git.saurik.com Git - apple/libpthread.git/blame - kern/kern_init.c
libpthread-330.201.1.tar.gz
[apple/libpthread.git] / kern / kern_init.c
CommitLineData
f1a1da6c
A
1//
2// pthread.c
3// pthread
4//
5// Created by Matt Wright on 9/13/12.
6// Copyright (c) 2012 Matt Wright. All rights reserved.
7//
8
9#include <kern/thread.h>
10#include <kern/debug.h>
11#include "kern_internal.h"
12
13kern_return_t pthread_start(kmod_info_t * ki, void *d);
14kern_return_t pthread_stop(kmod_info_t *ki, void *d);
15
16pthread_callbacks_t pthread_kern;
17
18const struct pthread_functions_s pthread_internal_functions = {
19 .pthread_init = _pthread_init,
f1a1da6c
A
20 .pth_proc_hashinit = _pth_proc_hashinit,
21 .pth_proc_hashdelete = _pth_proc_hashdelete,
22 .bsdthread_create = _bsdthread_create,
23 .bsdthread_register = _bsdthread_register,
24 .bsdthread_terminate = _bsdthread_terminate,
f1a1da6c 25 .thread_selfid = _thread_selfid,
f1a1da6c
A
26
27 .psynch_mutexwait = _psynch_mutexwait,
28 .psynch_mutexdrop = _psynch_mutexdrop,
29 .psynch_cvbroad = _psynch_cvbroad,
30 .psynch_cvsignal = _psynch_cvsignal,
31 .psynch_cvwait = _psynch_cvwait,
32 .psynch_cvclrprepost = _psynch_cvclrprepost,
33 .psynch_rw_longrdlock = _psynch_rw_longrdlock,
34 .psynch_rw_rdlock = _psynch_rw_rdlock,
35 .psynch_rw_unlock = _psynch_rw_unlock,
36 .psynch_rw_wrlock = _psynch_rw_wrlock,
37 .psynch_rw_yieldwrlock = _psynch_rw_yieldwrlock,
964d3577 38
010efe49
A
39 .pthread_find_owner = _pthread_find_owner,
40 .pthread_get_thread_kwq = _pthread_get_thread_kwq,
41
214d78a2
A
42 .workq_create_threadstack = workq_create_threadstack,
43 .workq_destroy_threadstack = workq_destroy_threadstack,
44 .workq_setup_thread = workq_setup_thread,
45 .workq_handle_stack_events = workq_handle_stack_events,
46 .workq_markfree_threadstack = workq_markfree_threadstack,
f1a1da6c
A
47};
48
49kern_return_t pthread_start(__unused kmod_info_t * ki, __unused void *d)
50{
51 pthread_kext_register((pthread_functions_t)&pthread_internal_functions, &pthread_kern);
52 return KERN_SUCCESS;
53}
54
55kern_return_t pthread_stop(__unused kmod_info_t *ki, __unused void *d)
56{
57 return KERN_FAILURE;
58}
59
60struct uthread*
61current_uthread(void)
62{
63 thread_t th = current_thread();
64 return pthread_kern->get_bsdthread_info(th);
65}