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
Post a Comment