| 3484 | } |
| 3485 | |
| 3486 | static void lwp_struct_copy(struct rt_lwp *dst, struct rt_lwp *src) |
| 3487 | { |
| 3488 | #ifdef ARCH_MM_MMU |
| 3489 | dst->end_heap = src->end_heap; |
| 3490 | #endif |
| 3491 | dst->lwp_type = src->lwp_type; |
| 3492 | dst->text_entry = src->text_entry; |
| 3493 | dst->text_size = src->text_size; |
| 3494 | dst->data_entry = src->data_entry; |
| 3495 | dst->data_size = src->data_size; |
| 3496 | dst->args = src->args; |
| 3497 | dst->background = src->background; |
| 3498 | dst->tty = src->tty; |
| 3499 | |
| 3500 | /* terminal API */ |
| 3501 | dst->term_ctrlterm = src->term_ctrlterm; |
| 3502 | |
| 3503 | rt_memcpy(dst->cmd, src->cmd, RT_NAME_MAX); |
| 3504 | if (src->exe_file) |
| 3505 | { |
| 3506 | if (dst->exe_file) |
| 3507 | { |
| 3508 | rt_free(dst->exe_file); |
| 3509 | } |
| 3510 | dst->exe_file = strndup(src->exe_file, DFS_PATH_MAX); |
| 3511 | } |
| 3512 | |
| 3513 | rt_memcpy(&dst->signal.sig_action, &src->signal.sig_action, sizeof(dst->signal.sig_action)); |
| 3514 | rt_memcpy(&dst->signal.sig_action_mask, &src->signal.sig_action_mask, sizeof(dst->signal.sig_action_mask)); |
| 3515 | rt_memcpy(&dst->signal.sig_action_nodefer, &src->signal.sig_action_nodefer, sizeof(dst->signal.sig_action_nodefer)); |
| 3516 | rt_memcpy(&dst->signal.sig_action_onstack, &src->signal.sig_action_onstack, sizeof(dst->signal.sig_action_onstack)); |
| 3517 | rt_memcpy(&dst->signal.sig_action_restart, &dst->signal.sig_action_restart, sizeof(dst->signal.sig_action_restart)); |
| 3518 | rt_memcpy(&dst->signal.sig_action_siginfo, &dst->signal.sig_action_siginfo, sizeof(dst->signal.sig_action_siginfo)); |
| 3519 | rt_memcpy(&dst->signal.sig_action_nocldstop, &dst->signal.sig_action_nocldstop, sizeof(dst->signal.sig_action_nocldstop)); |
| 3520 | rt_memcpy(&dst->signal.sig_action_nocldwait, &dst->signal.sig_action_nocldwait, sizeof(dst->signal.sig_action_nocldwait)); |
| 3521 | rt_strcpy(dst->working_directory, src->working_directory); |
| 3522 | } |
| 3523 | |
| 3524 | static int lwp_copy_files(struct rt_lwp *dst, struct rt_lwp *src) |
| 3525 | { |