gpiod_hog(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… gpiod_hog(9) β€” a Kernel API Manual moment

okay so bestie, welcome to gpiod_hog(9) from the Kernel API Manual. Yes, the whole function is literally named "hog" and no, we're not going to be normal about that. Let's get into it ✨


🌸 NAME 🌸

gpiod_hog β€” hog the specified GPIO desc given the provided flags

Like. It just takes a GPIO descriptor and claims it. Main character energy, honestly. πŸ‘‘


πŸŽ€ SYNOPSIS πŸŽ€

int gpiod_hog (struct gpio_desc *desc , const char *name , unsigned long
       lflags , enum gpiod_flags dflags );

Yup, that's the whole vibe. Returns an int, takes four things. We move. πŸ¦‹


πŸ’– ARGUMENTS πŸ’–

  • desc β€” the gpio whose value will be assigned. This is the little guy we're hogging. 🐷
  • name β€” gpio line name. its name. its identity. its whole brand.
  • lflags β€” bitmask of gpio_lookup_flags GPIO_* values β€” returned from of_find_gpio or of_get_gpio_hog. yes that's the exact wording, write it down. πŸ“
  • dflags β€” gpiod_flags β€” optional GPIO initialization flags. optional!! but iconic.

⭐ RETURN ⭐

0 on success, or negative errno on failure. That's it, that's the contract. zero = slay, negative errno = not slay 😭


🌈 SEE ALSO 🌈

okay this list is LONG and I'm obsessed with it. buckle up, bestie, we're going through all of them:

Kernel file ./drivers/gpio/gpiolib.c gpio_to_desc(9), gpio_device_get_desc(9), desc_to_gpio(9), gpiod_hwgpio(9), gpiod_to_chip(9), gpiod_to_gpio_device(9), gpio_device_get_base(9), gpio_device_get_label(9), gpio_device_get_chip(9), gpiochip_find_base_unlocked(9), gpiod_is_equal(9), gpiod_get_direction(9), gpiod_is_single_ended(9), gpiochip_query_valid_mask(9), gpiochip_get_data(9), gpiochip_remove(9), gpio_device_find(9), gpio_device_find_by_label(9), gpio_device_find_by_fwnode(9), gpio_device_get(9), gpio_device_put(9), gpio_device_to_device(9), gpiochip_set_hierarchical_irqchip(9), gpiochip_irq_domain_activate(9), gpiochip_irq_domain_deactivate(9), gpiochip_irq_map(9), gpiochip_add_irqchip(9), gpiochip_irqchip_remove(9), gpiochip_irqchip_add_domain(9), gpiochip_generic_request(9), gpiochip_generic_free(9), gpiochip_generic_config(9), gpiochip_add_pingroup_range(9), gpiochip_add_pin_range_with_pins(9), gpiochip_remove_pin_ranges(9), gpiochip_dup_line_label(9), gpiochip_request_own_desc(9), gpiochip_free_own_desc(9), gpio_set_debounce_timeout(9), gpiod_direction_input(9), gpiod_direction_output_raw(9), gpiod_direction_output(9), gpiod_enable_hw_timestamp_ns(9), gpiod_disable_hw_timestamp_ns(9), gpiod_set_config(9), gpiod_set_debounce(9), gpiod_set_transitory(9), gpiod_is_active_low(9), gpiod_toggle_active_low(9), gpiod_get_raw_value(9), gpiod_get_value(9), gpiod_get_raw_array_value(9), gpiod_get_array_value(9), gpiod_set_raw_value(9), gpiod_set_value_nocheck(9), gpiod_set_value(9), gpiod_set_raw_array_value(9), gpiod_set_array_value(9), gpiod_cansleep(9), gpiod_set_consumer_name(9), gpiod_is_shared(9), gpiod_to_irq(9), gpiochip_lock_as_irq(9), gpiochip_unlock_as_irq(9), gpiod_get_raw_value_cansleep(9), gpiod_get_value_cansleep(9), gpiod_get_raw_array_value_cansleep(9), gpiod_get_array_value_cansleep(9), gpiod_set_raw_value_cansleep(9), gpiod_set_value_cansleep(9), gpiod_set_raw_array_value_cansleep(9), gpiod_add_lookup_tables(9), gpiod_set_array_value_cansleep(9), gpiod_add_lookup_table(9), gpiod_remove_lookup_table(9), fwnode_gpiod_get_index(9), gpiod_count(9), gpiod_get(9), gpiod_get_optional(9), gpiod_configure_flags(9), gpiod_get_index(9), gpiod_get_index_optional(9), gpiochip_free_hogs(9), gpiod_get_array(9), gpiod_get_array_optional(9), gpiod_put(9), gpiod_put_array(9)

fr fr go read some of those. iykyk. 🫢


ngl the whole GPIO subsystem is a lot, but hogging one descriptor at a time is genuinely the move. no cap. πŸ’€

and that's the page, bestie! this one lives in ./drivers/gpio, dated October 2026, and the manual itself is gpiod_hog(9) from the Kernel API Manual. periodt. πŸ’œπŸŽ€βœ¨

πŸ“¦ where this page comes from