| 18 | } |
| 19 | |
| 20 | static |
| 21 | void* ff_start_routine(void * data) { |
| 22 | struct thread_data *p_data = (struct thread_data *) data; |
| 23 | |
| 24 | void * (* start_routine) (void *) = p_data->start_routine; |
| 25 | void *arg = p_data->arg; |
| 26 | ff_set_thread(p_data->parent); |
| 27 | ff_free(data); |
| 28 | start_routine(arg); |
| 29 | return NULL; |
| 30 | } |
| 31 | |
| 32 | int |
| 33 | ff_pthread_create(pthread_t *thread, const pthread_attr_t * attr, void * (* start_routine) (void *), void * arg) { |
nothing calls this directly
no test coverage detected