2012-09-15 14 views
11

मैं लिनक्स कर्नेल के बारे में अध्ययन कर रहा हूँ में क्या है और मैं एक समस्या"वर्तमान" लिनक्स कर्नेल स्रोत

मैं कई लिनक्स कर्नेल स्रोत फ़ाइलों को देखने के लिए है current-> फ़ाइलों की है। तो "वर्तमान" क्या है?

struct file *fget(unsigned int fd) 
{ 
    struct file *file; 
    struct files_struct *files = current->files; 

    rcu_read_lock(); 
    file = fcheck_files(files, fd); 
    if (file) { 
      /* File object ref couldn't be taken */ 
      if (file->f_mode & FMODE_PATH || 
       !atomic_long_inc_not_zero(&file->f_count)) 
        file = NULL; 
    } 
    rcu_read_unlock(); 

    return file; 
} 
+0

उदाहरण? 'वर्तमान' वास्तव में सामान्य चर नाम है। – nneonneo

उत्तर

20

यह वर्तमान प्रक्रिया के लिए एक सूचक है (यानी सिस्टम कॉल जारी करने वाली प्रक्रिया)।

x86 पर, यह arch/x86/include/current.h (अन्य आर्कों के लिए समान फ़ाइलों) में परिभाषित किया गया है। Linux Device Drivers अध्याय 2 में

#ifndef _ASM_X86_CURRENT_H 
#define _ASM_X86_CURRENT_H 

#include <linux/compiler.h> 
#include <asm/percpu.h> 

#ifndef __ASSEMBLY__ 
struct task_struct; 

DECLARE_PER_CPU(struct task_struct *, current_task); 

static __always_inline struct task_struct *get_current(void) 
{ 
    return percpu_read_stable(current_task); 
} 

#define current get_current() 

#endif /* __ASSEMBLY__ */ 

#endif /* _ASM_X86_CURRENT_H */ 

अधिक जानकारी:

वर्तमान सूचक उपयोगकर्ता प्रक्रिया वर्तमान में क्रियान्वित करने के लिए संदर्भित करता है। सिस्टम कॉल के निष्पादन के दौरान, जैसे खुला या पढ़ा जाता है, वर्तमान प्रक्रिया वह है जिसने कॉल को बुलाया था। कर्नेल कोड वर्तमान में उपयोग करके प्रक्रिया-विशिष्ट जानकारी का उपयोग कर सकता है, अगर ऐसा करने की आवश्यकता है। [...]

0

Currentstruct task_struct प्रकार का वैश्विक चर है। आप इसकी परिभाषा [1] पर पा सकते हैं।

Filesstruct files_struct है और इसमें वर्तमान प्रक्रिया द्वारा उपयोग की जाने वाली फ़ाइलों की जानकारी शामिल है।

[1] http://students.mimuw.edu.pl/SO/LabLinux/PROCESY/ZRODLA/sched.h.html

+0

'current' एक चर नहीं है बल्कि एक कार्य में' # परिभाषित 'है जो 'struct task_struct *' – Quaker

संबंधित मुद्दे