What's this linux structure -


 <कोड> #define GPIO_CHIP (_bank) {\ .irq_base = IRQ_GPIO_BASE_ ## _bank, \ .gpio_chip = {\। लेबल = "बैंक" # _bank, \ .owner = THIS_MODULE, \ .Set = gpio_set_value, \ .Get = gpio_get_value, \ .direction_output = gpio_direction_output, \ .direction_input = gpio_direction_input, \ .base = GPIO_BASE_ ## _bank, \ .ngpio = GPIO_NUM_ ## _bank, \}, \}  

इस .label और .Set और दूसरों के साथ परिभाषित क्या है?

  static void gpio_set_value (struct gpio_chip * चिप, अहस्ताक्षरित जीपीआईओ, इंट वैल्यू) {uint32_t __iomem * reg = CHIP_TO_REG (चिप, REG_GPIO_DATA_SET); Reg + =! मान; लेख (बिट (जीपीआईओ), रेग); }  

लेख, __iomen, बिट () के साथ यह कार्य, जहां वे लिनक्स में से संदर्भित हैं?

GPIO_CHIP GPIO के एक बैंक के लिए एक struct प्रारंभ करने में प्रयोग किया जाता है (सामान्य उद्देश्य I / O) यदि आपके पास

<पूर्व> स्ट्रेट्स {int a, b, c; चार * डी; }

तो आप

की तरह एक चर को प्रारंभ कर सकते हैं
  struct रों उदाहरण = {ए = 1, .b = 2, ग = 3,। डी = "हैलो!" };  

आप ऐसा भी कर सकते हैं

  struct उदाहरण = {1, 2, 3, "हैलो!" };  

लेकिन उस स्थिति में आपको संरचना के सदस्यों के आदेश का ट्रैक रखने की आवश्यकता है, यह एक नज़र में स्पष्ट नहीं है कि 1 , 2 , आदि के लिए वास्तव में उपयोग किया जा रहा है, और यह आसानी से सिंक से बाहर निकल सकता है।

यदि आप इस तरह से बहुत सारे चर को प्रारंभ करने की आवश्यकता है तो आप एक #define जो सिर्फ प्रारंभकर्ता है,

की तरह
  #define S_INIT (संख्या) {ए = संख्या, .b = 2, ग = 3} struct रों उदाहरण = S_INIT (0 ); संरचना के उदाहरण [] = {S_INIT (1), S_INIT (2), S_INIT (3)};   

GPIO_CHIP फ़ंक्शन पॉइंटर .gpio_chip.set को संरचना में gpio_set_value को इंगित करता है, इसलिए

विवरण के लिए परामर्श करें।


Comments

Popular posts from this blog

java - Can't add JTree to JPanel of a JInternalFrame -

javascript - data.match(var) not working it seems -

javascript - How can I pause a jQuery .each() loop, while waiting for user input? -