return 0; }这三的蓝色部分是什么呢?看下面的源码,应该知道其是个struct s3c_gpio_chip *chips结构体,在同一个文件中定义,现在原始的结构体:/** * struct s3c_gpio_chip - wrapper for specific implementation of gpio对具体GPIO的包装 * @chip: The chip structure to be exported via gpiolib. 芯片的结构,配置通过gpiolib向外输出 * @base: The base pointer to the gpio configuration registers. * @config: special function and pull-resistor control information. * * This wrapper provides the necessary information for the Samsung * specific gpios being registered with gpiolib. */ struct s3c_gpio_chip { struct gpio_chip chip; struct s3c_gpio_cfg*config; void __iomem*base; }; struct gpio_chip源码如下:/** * struct gpio_chip - abstract a GPIO controller 对GPIO控制器的抽象 * @label: for diagnostics为判断而设 * @dev: optional device providing the GPIOs * @owner: helps prevent removal of modules exporting active GPIOs * @request: optional hook for chip-specific activation, such as *enabling module power and clock; may sleep * @free: optional hook for chip-specific deactivation, such as *disabling module power and clock; may sleep * @direction_input: configures signal "offset" as input, or returns error * @get: returns value for signal "offset"; for output signals this *returns either the value actually sensed, or zero * @direction_output: configures signal "offset" as output, or returns error * @set: assigns output value for signal "offset" * @to_irq: optional hook supporting non-static gpio_to_irq() mappings; *implementation may not sleep * @dbg_show: optional routine to show contents in debugfs; default code *will be used when this is omitted, but custom code can show extra *state (such as pullup/pulldown configuration). * @base: identifies the first GPIO number handled by this chip; or, if *negative during registration, requests dynamic ID allocation. * @ngpio: the number of GPIOs handled by this controller; the last GPIO *handled is (base + ngpio - 1). * @can_sleep: flag must be set iff get()/set() methods sleep, as they *must while accessing GPIO expander chips over I2C or SPI * * A gpio_chip can help platforms abstract various sources of GPIOs so * they can all be accessed through a common programing interface.帮助具体平台抽象各种GPIO来源,是能用统一的接口操作 * Example sources would be SOC controllers, FPGAs, multifunction * chips, dedicated GPIO expanders, and so on. * * Each chip controls a number of signals, identified in method calls * by "offset" values in the range 0..(@ngpio - 1). When those signals * are referenced through calls like gpio_get_value(gpio), the offset * is calculated by subtracting @base from the gpio number. */ struct gpio_chip { const char*label; struct device*dev; struct module*owner;