3.1. Introducing Our Program3.2. Process Descriptor3.2.1. Process Attribute–Related Fields3.2.1.1. state3.2.1.2. pid3.2.1.3. flags3.2.1.4. binfmt3.2.1.5. exit_code and exit_signal3.2.1.6. pdeath_signal3.2.1.7. comm3.2.1.8. ptrace3.2.2. Scheduling Related Fields3.2.2.1. prio3.2.2.2. static_prio3.2.2.3. run_list3.2.2.4. array3.2.2.5. sleep_avg3.2.2.6. timestamp3.2.2.7. interactive_credit3.2.2.8. policy3.2.2.9. cpus_allowed3.2.2.10. time_slice3.2.2.11. first_time_slice3.2.2.12. activated3.2.2.13. rt_priority3.2.2.14. nivcsw and nvcsw3.2.3. Process Relations–Related Fields3.2.3.1. real_parent3.2.3.2. parent3.2.3.3. children3.2.3.4. sibling3.2.3.5. group_leader3.2.4. Process Credentials–Related Fields3.2.4.1. uid and gid3.2.4.2. euid and egid3.2.4.3. suid and sgid3.2.4.4. fsuid and fsgid3.2.4.5. group_info3.2.5. Process Capabilities–Related Fields3.2.5.1. cap_effective, cap_inheritable, cap_permitted, and keep_capabilities3.2.6. Process Limitations–Related Fields3.2.6.1. rlim3.2.7. Filesystem- and Address Space–Related Fields3.2.7.1. fs3.2.7.2. files3.2.7.3. mm3.2.7.4. active_mm3.3. Process Creation: fork(), vfork(), and clone() System Calls3.3.1. fork() Function3.3.2. vfork() Function3.3.3. clone() Function3.3.4. do_fork() FunctionLines 1178–1183Line 1184Line 1189Lines 1194–1197Lines 1199–1205Lines 1226–1229Lines 1231–1234Lines 1236–1239Line 12483.4. Process Lifespan3.4.1. Process States3.4.2. Process State Transitions3.4.2.1. Ready to RunningTASK_RUNNING to TASK_RUNNING3.4.2.2. Running to ReadyTASK_RUNNING to TASK_RUNNING3.4.2.3. Running to BlockedTASK_RUNNING to TASK_INTERRUPTIBLETASK_RUNNING to TASK_UNINTERRUPTIBLETASK_RUNNING to TASK_ZOMBIETASK_RUNNING to TASK_STOPPEDTASK_UNINTERRUPTIBLE or TASK_INTERRUPTIBLE to TASK_STOPPED3.4.2.4. Blocked to Ready3.5. Process Termination3.5.1. sys_exit() Function3.5.2. do_exit() FunctionLine 707Lines 711–716Line 719Lines 729–732Lines 735–742Lines 744–745Lines 747–749Line 751Line 752Line 754Line 7573.5.3. Parent Notification and sys_wait4()Line 1031Lines 1033 and 1040Line 1037–1038Line 1042Line 1043Lines 1046 and 1094Line 1051Line 1054Line 1058–1079Line 1106Line 1107–11113.6. Keeping Track of Processes: Basic Scheduler Construction3.6.1. Basic Structure3.6.2. Waking Up from Waiting or Activation3.6.2.1. sched_fork(): Scheduler Initialization for Newly Forked ProcessLine 727Line 728–730Lines 740–753Lines 754–767Lines 930–934Lines 940–947Line 948Line 749Lines 951–960Lines 311–312Line 313Line 314Line 315Line 3163.7. Wait Queues3.7.1. Adding to the Wait Queue3.7.2. Waiting on the EventLine 124–126Lines 127–132Lines 133–1343.7.3. Waking UpLine 2336Lines 2340, 2342Line 2341Line 2313Line 2315Line 2317Line 2320Line 2322Lines 2322–23253.8. Asynchronous Execution Flow3.8.1. Exceptions3.8.1.1. System CallsLine 485Line 4883.8.2. Interrupts3.8.2.1. Interrupt Handlers3.8.2.2. IRQ StructuresStruct irq_desc_tLine 61Line 62Line 63Line 64Lines 65–66Line 67Struct irqactionLine 36Line 37Line 39Struct hw_interrupt_typeLine 41Lines 42–483.8.2.3. An Interrupt Example: System TimerLine 413Line 902Lines 908–910Lines 912–935Lines 941–942Line 947Line 949Line 415Line 410Lines 342–348Lines 422–426Line 431Line 437Line 419Line 317Line 351Line 72Lines 81–84Interrupt TimeProcessing the PowerPC External Interrupt VectorLines 513–530Line 523Line 524Line 432Line 435Line 436Lines 441–443Line 450Lines 451–462Lines 463–465Lines 489–497Processing the PowerPC System Timer InterruptLine 152Line 159Lines 165 and 195Line 167Line 189Line 198Line 208Processing the x86 System Timer InterruptLine 274Line 287Line 227Line 18Line 25SummaryProject: current System VariableProject Source CodeLine 4Line 5Line 12Line 15Line 16Line 18Lines 32–38Running the CodeExercises