Function report |
Source Code:kernel\sys.c |
Create Date:2022-07-28 09:21:30 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:SYSCALL_DEFINE5
Proto:SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, unsigned long, arg4, unsigned long, arg5)
Type:
Parameter:Nothing
| 2267 | me = current process |
| 2275 | error = 0 |
| 2277 | Case option == Second arg is a signal |
| 2283 | Break |
| 2284 | Case option == Second arg is a ptr to return the signal |
| 2285 | error = Write a simple value into user space(The signal sent when the parent dies, (int__user * )arg2) |
| 2286 | Break |
| 2287 | Case option == Get/set current->mm->dumpable |
| 2288 | error = get_dumpable(mm) |
| 2289 | Break |
| 2290 | Case option == PR_SET_DUMPABLE |
| 2291 | If arg2 != No setuid dumping && arg2 != Dump as user of process Then |
| 2295 | set_dumpable(mm, arg2) |
| 2296 | Break |
| 2298 | Case option == PR_SET_UNALIGN |
| 2299 | error = SET_UNALIGN_CTL(me, arg2) |
| 2300 | Break |
| 2302 | error = GET_UNALIGN_CTL(me, arg2) |
| 2303 | Break |
| 2304 | Case option == PR_SET_FPEMU |
| 2305 | error = SET_FPEMU_CTL(me, arg2) |
| 2306 | Break |
| 2308 | error = GET_FPEMU_CTL(me, arg2) |
| 2309 | Break |
| 2310 | Case option == PR_SET_FPEXC |
| 2311 | error = SET_FPEXC_CTL(me, arg2) |
| 2312 | Break |
| 2314 | error = GET_FPEXC_CTL(me, arg2) |
| 2315 | Break |
| 2318 | Break |
| 2319 | Case option == PR_SET_TIMING |
| 2320 | If arg2 != Normal, traditional,statistical process timing Then error = -EINVAL |
| 2322 | Break |
| 2323 | Case option == Set process name |
| 2324 | comm[ size of * executable name, excluding path. * - normally initialized setup_new_exec() * - access it with [gs]et_task_comm() * - lock it with task_lock() - 1] = 0 |
| 2325 | If Copy a NUL terminated string from userspace < 0 Then Return -EFAULT |
| 2328 | set_task_comm(me, comm) |
| 2329 | proc_comm_connector(me) |
| 2330 | Break |
| 2331 | Case option == Get process name |
| 2332 | get_task_comm(comm, me) |
| 2335 | Break |
| 2336 | Case option == Get/set process endian |
| 2337 | error = GET_ENDIAN(me, arg2) |
| 2338 | Break |
| 2339 | Case option == PR_SET_ENDIAN |
| 2340 | error = SET_ENDIAN(me, arg2) |
| 2341 | Break |
| 2342 | Case option == Get/set process seccomp mode |
| 2343 | error = prctl_get_seccomp() |
| 2344 | Break |
| 2345 | Case option == PR_SET_SECCOMP |
| 2346 | error = prctl_set_seccomp(arg2, (char__user * )arg3) |
| 2347 | Break |
| 2350 | Break |
| 2351 | Case option == PR_SET_TSC |
| 2352 | error = SET_TSC_CTL(arg2) |
| 2353 | Break |
| 2354 | Case option == PR_TASK_PERF_EVENTS_DISABLE |
| 2355 | error = perf_event_task_disable() |
| 2356 | Break |
| 2357 | Case option == PR_TASK_PERF_EVENTS_ENABLE |
| 2358 | error = perf_event_task_enable() |
| 2359 | Break |
| 2360 | Case option == PR_GET_TIMERSLACK |
| 2361 | If timer_slack_ns > ULONG_MAX Then error = ULONG_MAX |
| 2363 | Else error = timer_slack_ns |
| 2365 | Break |
| 2367 | If arg2 <= 0 Then timer_slack_ns = default_timer_slack_ns |
| 2370 | Else timer_slack_ns = arg2 |
| 2372 | Break |
| 2377 | Case arg2 == PR_MCE_KILL_CLEAR |
| 2382 | Case arg2 == PR_MCE_KILL_SET |
| 2383 | flags |= Process policy on mce errors |
| 2384 | If arg3 == PR_MCE_KILL_EARLY Then flags |= Early kill for mce process policy |
| 2386 | Else if arg3 == PR_MCE_KILL_LATE Then flags &= ~Early kill for mce process policy |
| 2388 | Else if arg3 == PR_MCE_KILL_DEFAULT Then flags &= ~(Early kill for mce process policy | Process policy on mce errors ) |
| 2391 | Else Return -EINVAL |
| 2393 | Break |
| 2394 | Default |
| 2395 | Return -EINVAL |
| 2397 | Break |
| 2398 | Case option == PR_MCE_KILL_GET |
| 2401 | If flags & Process policy on mce errors Then error = If flags & Early kill for mce process policy Then PR_MCE_KILL_EARLY Else PR_MCE_KILL_LATE |
| 2404 | Else error = PR_MCE_KILL_DEFAULT |
| 2406 | Break |
| 2407 | Case option == Tune up process memory map specifics. |
| 2410 | Case option == PR_GET_TID_ADDRESS |
| 2411 | error = prctl_get_tid_address(me, (int__user * * )arg2) |
| 2412 | Break |
| 2413 | Case option == PR_SET_CHILD_SUBREAPER |
| 2414 | is_child_subreaper = Not Not arg2 |
| 2415 | If Not arg2 Then Break |
| 2418 | walk_process_tree(me, propagate_has_child_subreaper, NULL) |
| 2419 | Break |
| 2420 | Case option == PR_GET_CHILD_SUBREAPER |
| 2421 | error = Write a simple value into user space(is_child_subreaper, (int__user * )arg2) |
| 2423 | Break |
| 2429 | Break |
| 2430 | Case option == PR_GET_NO_NEW_PRIVS |
| 2433 | Return If task_no_new_privs(current process) Then 1 Else 0 |
| 2434 | Case option == PR_GET_THP_DISABLE |
| 2437 | error = Not Not st_bit - Determine whether a bit is set*@nr: bit number to test*@addr: Address to start counting from |
| 2438 | Break |
| 2439 | Case option == PR_SET_THP_DISABLE |
| 2442 | If down_write_killable( & mmap_sem) Then Return -EINTR |
| 2444 | If arg2 Then Atomically set a bit in memory |
| 2448 | lease a write lock |
| 2449 | Break |
| 2451 | Case option == PR_MPX_DISABLE_MANAGEMENT |
| 2453 | Return -EINVAL |
| 2454 | Case option == PR_SET_FP_MODE |
| 2455 | error = SET_FP_MODE(me, arg2) |
| 2456 | Break |
| 2457 | Case option == PR_GET_FP_MODE |
| 2458 | error = GET_FP_MODE(me) |
| 2459 | Break |
| 2460 | Case option == set task vector length |
| 2461 | error = SVE_SET_VL(arg2) |
| 2462 | Break |
| 2463 | Case option == get task vector length |
| 2464 | error = SVE_GET_VL() |
| 2465 | Break |
| 2466 | Case option == Per task speculation control |
| 2469 | error = arch_prctl_spec_ctrl_get(me, arg2) |
| 2470 | Break |
| 2471 | Case option == PR_SET_SPECULATION_CTRL |
| 2474 | error = arch_prctl_spec_ctrl_set(me, arg2, arg3) |
| 2475 | Break |
| 2476 | Case option == Reset arm64 pointer authentication keys |
| 2481 | Case option == Tagged user address controls for arm64 |
| 2486 | Case option == PR_GET_TAGGED_ADDR_CTRL |
| 2489 | error = GET_TAGGED_ADDR_CTRL() |
| 2490 | Break |
| 2491 | Default |
| 2495 | Return error |
| Source code conversion tool public plug-in interface | X |
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |