|
nckernel
0.1
|
POSIX 기준의 쓰레드 API set 을 정의하고 구현한다 More...
|
Typedefs | |
| typedef void * | pthread_attr_t |
| typedef void * | pthread_t |
Functions | |
| int | pthread_attr_destroy (pthread_attr_t *attr) |
| 쓰레드 속성 객체를 소멸 시킨다. More... | |
| int | pthread_attr_getstack (pthread_attr_t *attr, void **stackaddr, size_t *stacksize) |
| 쓰레드의 스택 정보를 얻어온다. More... | |
| int | pthread_attr_getstackaddr (pthread_attr_t *attr, void **stackaddr) |
| 현재 쓰레드의 스택 주소를 가져온다. More... | |
| int | pthread_attr_getstacksize (pthread_attr_t *attr, size_t *stacksize) |
| 현재 쓰레드의 스택 크기를 읽어 온다. More... | |
| int | pthread_attr_init (pthread_attr_t *attr) |
| 쓰레드 속성 객체를 생성한다. More... | |
| int | pthread_attr_setstack (pthread_attr_t *attr, void *stackaddr, size_t stacksize) |
| 쓰레드가 사용할 Attributes 에 스택 정보를 설정한다. More... | |
| int | pthread_attr_setstackaddr (pthread_attr_t *attr, void *stackaddr) |
| 현재 쓰레드의 스택 주소를 설정하며, 해당 위치에서 부터 PTHREAD_STACK_MIN 보다 큰 영역이 할당 되어 있어야 한다. More... | |
| int | pthread_attr_setstacksize (pthread_attr_t *attr, size_t stacksize) |
| 현재 쓰레드의 스택 크기를 결정한다. More... | |
| int | pthread_cancel (pthread_t thread) |
| 쓰레드 취소 요청을 보낸다 More... | |
| int | pthread_create (pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg) |
| 쓰레드를 생성한다. More... | |
| int | pthread_detach (pthread_t thread) |
| 쓰레드를 detach 시킨다. 쓰레드가 detach 되면 관련 Resource 들이 자동으로 시스템에 반환된다. More... | |
| int | pthread_equal (pthread_t t1, pthread_t t2) |
| 두 쓰레드가 같은 쓰레드 인지 비교한다. More... | |
| void | pthread_exit (void *retval) |
| 호출한 쓰레드를 종료 시킨다. More... | |
| int | pthread_join (pthread_t thread, void **retval) |
| 주어진 쓰레드가 종료될 때 까지 기다린다. 해당 쓰레드의 자원을 모두 회수하고 정리한다. More... | |
| pthread_t | pthread_self (void) |
| 현재 쓰레드 포인터를 가져온다. More... | |
| int | pthread_yield (void) |
| 다른 쓰레드가 스케쥴링 될 수 있도록 양보한다. More... | |
POSIX 기준의 쓰레드 API set 을 정의하고 구현한다
| typedef void* pthread_attr_t |
| int pthread_attr_destroy | ( | pthread_attr_t * | attr) |
쓰레드 속성 객체를 소멸 시킨다.
| [in] | attr | 쓰레드 속성 객체 |
Definition at line 564 of file pthread_fork.c.

| int pthread_attr_getstack | ( | pthread_attr_t * | attr, |
| void ** | stackaddr, | ||
| size_t * | stacksize | ||
| ) |
쓰레드의 스택 정보를 얻어온다.
| [in] | attr | 속성 객체 |
| [out] | stackaddr | 스택으로 사용되고 있는 메모리 시작 주소 |
| [out] | stacksize | 스택의 크기 |
Definition at line 700 of file pthread_fork.c.
References thread_attr::addr, thread_attr::size, and thread_attr::stack.
| int pthread_attr_getstackaddr | ( | pthread_attr_t * | attr, |
| void ** | stackaddr | ||
| ) |
현재 쓰레드의 스택 주소를 가져온다.
| [in] | attr | 속성 객체 |
| [out] | stackaddr | 스택 주소 |
Definition at line 770 of file pthread_fork.c.
References thread_attr::addr, and thread_attr::stack.
| int pthread_attr_getstacksize | ( | pthread_attr_t * | attr, |
| size_t * | stacksize | ||
| ) |
현재 쓰레드의 스택 크기를 읽어 온다.
| [in] | attr | 속성 객체 |
| [out] | stacksize | 스택의 크기 |
Definition at line 752 of file pthread_fork.c.
References thread_attr::size, and thread_attr::stack.
| int pthread_attr_init | ( | pthread_attr_t * | attr) |
쓰레드 속성 객체를 생성한다.
| [in] | attr | 쓰레드 속성 객체 |
Definition at line 531 of file pthread_fork.c.
References thread_attr::addr, common_get_tcb_sz(), EFAULT, ENOMEM, malloc(), memcpy(), NULL, PTHREAD_STACK_MIN, thread_attr::size, and thread_attr::stack.

| int pthread_attr_setstack | ( | pthread_attr_t * | attr, |
| void * | stackaddr, | ||
| size_t | stacksize | ||
| ) |
쓰레드가 사용할 Attributes 에 스택 정보를 설정한다.
| [in] | attr | 속성 객체 |
| [in] | stackaddr | 스택으로 사용할 메모리 시작 주소 |
| [in] | stacksize | 스택의 크기 |
Definition at line 683 of file pthread_fork.c.
References thread_attr::addr, common_get_tcb_sz(), EFAULT, thread_attr::size, and thread_attr::stack.

| int pthread_attr_setstackaddr | ( | pthread_attr_t * | attr, |
| void * | stackaddr | ||
| ) |
현재 쓰레드의 스택 주소를 설정하며, 해당 위치에서 부터 PTHREAD_STACK_MIN 보다 큰 영역이 할당 되어 있어야 한다.
| [in] | attr | 속성 객체 |
| [in] | stackaddr | 스택 주소 |
Definition at line 761 of file pthread_fork.c.
References thread_attr::addr, and thread_attr::stack.
| int pthread_attr_setstacksize | ( | pthread_attr_t * | attr, |
| size_t | stacksize | ||
| ) |
현재 쓰레드의 스택 크기를 결정한다.
| [in] | attr | 속성 객체 |
| [in] | stacksize | 스택의 크기 |
Definition at line 743 of file pthread_fork.c.
References thread_attr::size, and thread_attr::stack.
| int pthread_cancel | ( | pthread_t | thread) |
쓰레드 취소 요청을 보낸다
| [in] | thread | 쓰레드 객체 |
free(arch_data->pgd); free(arch_data->rpgd);
현재는 user process 는 fork 를 이용하도록 변경 중이므로, is_user field 는 thread control block 에서 없애고, pgd, rpgd 는 아래ㅘ 같이 reset 하도록 처리해 둔다.
Definition at line 613 of file pthread_fork.c.
References thread::arch_data, dbg_printf(), EINVAL, free(), irq_local_restore(), irq_local_save(), NULL, thread::object, object_destroy(), x86_arch_data::pma_pgd, pthread_equal(), pthread_self(), x86_arch_data::rpgd, sem_clear(), USER, thread::user_data, and x86_util_get_ring().

| int pthread_create | ( | pthread_t * | thread, |
| const pthread_attr_t * | attr, | ||
| void *(*)(void *) | start_routine, | ||
| void * | arg | ||
| ) |
쓰레드를 생성한다.
| [out] | thread | 쓰레드 객체 |
| [in] | attr | 쓰레드 속성 객체 |
| [in] | start_routine | 쓰레드 메인 함수 |
| [in] | arg | 메인 함수에게 전달 할 인자 |
Definition at line 489 of file pthread_fork.c.
References thread::arch_data, ENOMEM, free(), malloc(), memcpy(), NULL, thread::root, thread_create(), thread_set_status(), and thread::user_data.

| int pthread_detach | ( | pthread_t | thread) |
쓰레드를 detach 시킨다. 쓰레드가 detach 되면 관련 Resource 들이 자동으로 시스템에 반환된다.
| [in] | thread | 쓰레드 객체 |
Definition at line 592 of file pthread_fork.c.
References printf().

두 쓰레드가 같은 쓰레드 인지 비교한다.
| [in] | t1 | 비교 쓰레드 |
| [in] | t2 | 비교 쓰레드 |
Definition at line 602 of file pthread_fork.c.
Referenced by pthread_cancel(), pthread_mutex_lock(), pthread_mutex_trylock(), and pthread_mutex_unlock().

| void pthread_exit | ( | void * | retval) |
호출한 쓰레드를 종료 시킨다.
| [in] | retval | 현재 쓰레드가 종료되길 기다리는 쓰레드에게 전달 할 종료 값 |
| int pthread_join | ( | pthread_t | thread, |
| void ** | retval | ||
| ) |
주어진 쓰레드가 종료될 때 까지 기다린다. 해당 쓰레드의 자원을 모두 회수하고 정리한다.
| [in] | thread | 쓰레드 객체 |
| [in] | retval | 쓰레드 종료시 전달 된 값 |
Definition at line 582 of file pthread_fork.c.
References printf().

| pthread_t pthread_self | ( | void | ) |
현재 쓰레드 포인터를 가져온다.
+----------------------—+ <- Lower address | tcb_tag | | tcb_ptr | +----------------------—+ <- Higher address
Definition at line 719 of file pthread_fork.c.
References _SC_PAGESIZE, thread::esp, NULL, strncmp(), sysconf(), local_tcb::tag, local_tcb::tcb_ptr, and THREAD_TAG.
Referenced by close(), do_irq(), execl(), execle(), execlp(), execv(), execvp(), execvpe(), fileno(), ioctl(), lseek(), onetime_map_init(), onetime_unmap(), open(), page_fault_handler(), pthread_cancel(), pthread_mutex_lock(), pthread_mutex_trylock(), pthread_mutex_unlock(), read(), sem_wait(), thread_get_stderr(), thread_get_stdin(), thread_get_stdout(), and write().


| int pthread_yield | ( | void | ) |
다른 쓰레드가 스케쥴링 될 수 있도록 양보한다.
Definition at line 779 of file pthread_fork.c.
References SYS_NR_YIELD, and syscall().
Referenced by main().


1.8.4