gpiod_put(9)
π gpiod_put(9) β from the Kernel API Manual, bestie
okay so real talk, this one is short but it's load-bearing. Sit down, grab a strawberry π, we're learning how to let go of a GPIO descriptor.
β¨ NAME β¨
gpiod_put β dispose of a GPIO descriptor
like, release it, free it, say your goodbyes π«Ά
πΈ SYNOPSIS πΈ
void gpiod_put (struct gpio_desc *desc );
yes that's the whole thing. no cap. she's a one-liner π
π ARGUMENTS π
descβ the GPIO descriptor you're about to dispose of. this is the one you're letting go. bye bestie π
π¦ DESCRIPTION π¦
π¨ girl, listen to me. No descriptor can be used after gpiod_put has been called on it.
that's it. that's the whole vibe. once you've called gpiod_put on a desc, that descriptor is done β no reads, no writes, no sneaky little calls afterwards. it's giving "blocked, don't text" energy. literally the main character moment where you close the door and do not look back π
so like... be SO sure you're finished with it before you call this. because there's no coming back from it. periodt π₯
π SEE ALSO π
okay this is the part where she really shows off. look at this entire circle of friends β these are all (9) friends from Kernel file ./drivers/gpio/gpiolib.c, and honestly? the way the kernel keeps them all connected is iconic β¨
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)gpiod_hog(9)gpiochip_free_hogs(9)gpiod_get_array(9)gpiod_get_array_optional(9)gpiod_put_array(9)
π₯Ί and that's the whole page, bestie. short, sweet, and absolutely not to be messed with.
okay and like, housekeeping before you go β this lovely little thing lives under ./drivers/gpio, dated October 2026, and it's straight out of the Kernel API Manual. mwah π go free your descriptors responsibly, ily, bye! π§ββοΈ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms