นิยาม task_struct อยู่ที่ไหนในเคอร์เนล 2.6.30.5


9

ในเคอร์เนลเวอร์ชัน 2.6.15 ฉันได้ว่าฉันสามารถเขียนtask_structในไฟล์ (รวมถึง / linux / sched.h), เช่น:

struct task_struct {  
    unsigned did_exec:1;  
    pid_t pid;  
    pid_t tgid;  
    ...
    char hide;
}  

แต่น่าเสียดายที่เมื่อฉันอัปเกรดเป็นเวอร์ชัน 2.6.30.5 ฉันดูไฟล์เดียวกันฉันเพิ่งพบคำประกาศของtask_structเช่น:

struct task_struct;

และผมก็มีความคิดที่ยื่นฉันควรดูเพื่อวัตถุประสงค์ในการระบุของตัวเองไม่task_struct? มีคนช่วยฉันได้ไหม

คำตอบ:


6

ใช้grepหรือเครื่องมือค้นหาอื่น ๆ เพื่อค้นหาคำจำกัดความ:

grep -r '^struct task_struct ' include

หรือค้นหาออนไลน์ที่LXR : http://lxr.linux.no/linux+v2.6.30.5/+search?search=task_struct

include/linux/sched.hโครงสร้างยังคงถูกกำหนดไว้ใน มีการประกาศไปข้างหน้าซึ่งใช้ในคำจำกัดความชนิดเรียกซ้ำและเป็นคำจำกัดความเพิ่มเติม


3

ฉันใช้เดเบียนบีบ /usr/src/linux-headers-2.6.32-5-common-vserver/include/linux/sched.hผมเห็นความหมายที่อยู่ในส่วนหัวที่สอดคล้องกับเคอร์เนลปัจจุบันของฉันใน คำจำกัดความเริ่มต้นด้วย

struct task_struct {
        volatile long state;    /* -1 unrunnable, 0 runnable, >0 stopped */
        void *stack;
        atomic_t usage;
        unsigned int flags;     /* per process flags, defined below */
        unsigned int ptrace;

        int lock_depth;         /* BKL lock depth */

HTH


ดังนั้นฉันใช้รุ่นที่ไม่เสถียรหรือไม่ แต่คุณมีความคิดใดบ้างที่การเปลี่ยนไปใช้คำใบ้ใด ๆ ขอบคุณ
kaiwii ho

@kaiwiiho: ขออภัยฉันไม่แน่ใจว่าคุณหมายถึงอะไร
Faheem Mitha

ฉันหมายความว่าไม่ว่ารุ่น 2.6.15 ไม่เสถียรและฉันคิดว่าการกำหนดต้องมีอยู่ในไฟล์. c ที่ delcrates sched.h แต่น่าเสียดายที่ฉันไม่ได้คิดหาวิธีที่จะหาไฟล์ c และ คุณสามารถให้คำแนะนำสำหรับฉันได้ไหม
kaiwii ho

@kaiwiiho: ไม่แน่ใจว่าคุณหมายถึงมั่นคง 2.6.15 คือการปล่อยเคอร์เนล นิยามของ struct อยู่ในไฟล์ส่วนหัวเท่าที่ฉันเห็น คุณกำลังมองหาอะไร?
Faheem Mitha
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.