| 420 | } |
| 421 | |
| 422 | static int |
| 423 | protmax_ctl(struct thread *td, struct proc *p, int state) |
| 424 | { |
| 425 | PROC_LOCK_ASSERT(p, MA_OWNED); |
| 426 | |
| 427 | switch (state) { |
| 428 | case PROC_PROTMAX_FORCE_ENABLE: |
| 429 | p->p_flag2 &= ~P2_PROTMAX_DISABLE; |
| 430 | p->p_flag2 |= P2_PROTMAX_ENABLE; |
| 431 | break; |
| 432 | case PROC_PROTMAX_FORCE_DISABLE: |
| 433 | p->p_flag2 |= P2_PROTMAX_DISABLE; |
| 434 | p->p_flag2 &= ~P2_PROTMAX_ENABLE; |
| 435 | break; |
| 436 | case PROC_PROTMAX_NOFORCE: |
| 437 | p->p_flag2 &= ~(P2_PROTMAX_ENABLE | P2_PROTMAX_DISABLE); |
| 438 | break; |
| 439 | default: |
| 440 | return (EINVAL); |
| 441 | } |
| 442 | return (0); |
| 443 | } |
| 444 | |
| 445 | static int |
| 446 | protmax_status(struct thread *td, struct proc *p, int *data) |
no outgoing calls
no test coverage detected