Lines Matching defs:uca
376 linux_clone3_args_valid(struct l_user_clone_args *uca)
380 if ((uca->flags & ~(LINUX_CLONE_LEGACY_FLAGS |
383 if ((uca->flags & (LINUX_CLONE_DETACHED | LINUX_CSIGNAL)) != 0)
386 if ((uca->flags & (LINUX_CLONE_SIGHAND | LINUX_CLONE_CLEAR_SIGHAND)) ==
389 if ((uca->flags & (LINUX_CLONE_THREAD | LINUX_CLONE_PARENT)) != 0 &&
390 uca->exit_signal != 0)
394 if (uca->set_tid_size > LINUX_MAX_PID_NS_LEVEL)
396 if (uca->set_tid == 0 && uca->set_tid_size > 0)
398 if (uca->set_tid != 0 && uca->set_tid_size == 0)
401 if (uca->stack == 0 && uca->stack_size > 0)
403 if (uca->stack != 0 && uca->stack_size == 0)
407 if ((uca->exit_signal & ~(uint64_t)LINUX_CSIGNAL) != 0)
411 if ((uca->flags & LINUX_CLONE_NEWTIME) != 0) {
415 if ((uca->flags & LINUX_CLONE_INTO_CGROUP) != 0) {
419 if (uca->set_tid != 0 || uca->set_tid_size != 0) {
430 struct l_user_clone_args *uca;
445 size = max(args->usize, sizeof(*uca));
446 uca = malloc(size, M_LINUX, M_WAITOK | M_ZERO);
447 error = copyin(args->uargs, uca, args->usize);
450 error = linux_clone3_args_valid(uca);
454 ca->flags = uca->flags;
455 ca->child_tid = PTRIN(uca->child_tid);
456 ca->parent_tid = PTRIN(uca->parent_tid);
457 ca->exit_signal = uca->exit_signal;
458 ca->stack = uca->stack + uca->stack_size;
459 ca->stack_size = uca->stack_size;
460 ca->tls = uca->tls;
468 free(uca, M_LINUX);