gpiod_set_ar...lue_cansleep(9)
π gpiod_set_ar...lue_cansleep(9) β like, the Kernel API Manual bestie β¨
okay so. this is a page straight out of the Kernel API Manual, and the star of the show is gpiod_set_ar...lue_cansleep(9). yes the name is a whole mood (it's truncated, that's just how the header rolls), but the function is real and she's iconic. let's get into it π
β¨ NAME β¨
gpiod_set_array_value_cansleep β assign values to an array of GPIOs π¦
like, a WHOLE array. not just one. she's doing the most, and honestly? slay.
πΈ SYNOPSIS πΈ
int gpiod_set_array_value_cansleep (unsigned int array_size , struct
gpio_desc **desc_array , struct gpio_array *array_info , unsigned long
*value_bitmap );
look at her. four arguments. main character energy fr fr π
π«Ά ARGUMENTS π«Ά
array_sizeβ number of elements in the descriptor array / value bitmap. yes bestie, both of them. they gotta match up, okay? πdesc_arrayβ array of GPIO descriptors whose values will be assigned. this is the guest list πarray_infoβ information on applicability of fast bitmap processing path. she's the vibe check for whether we get to go fast β‘value_bitmapβ bitmap of values to assign. the actual ~values~ being handed out, one bit at a time π
π DESCRIPTION π
So like β this function sets the logical values of the GPIOs. and "logical" is doing a lot of heavy lifting here, because that means it's taking their ACTIVE_LOW status into account. so a low-key inversion? already handled. you don't gotta think about it, she thinks about it for you π§
Also, and this is the important part, this function is to be called from contexts that can sleep. like, it sleeps. it needs a context where napping is legal. do NOT call her from somewhere that can't sleep, that's not her vibe and it's not gonna go well π
π₯ RETURN π₯
0 on success, or negative errno on failure. that's it. zero means we ate, negative means something went off π
π SEE ALSO π
Kernel file ./drivers/gpio/gpiolib.c β go read her, she's the source of truth π
and then the whole extended friend group, no cap:
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_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(9)gpiod_put_array(9)
ngl the _cansleep suffix is the whole personality. if you're in a spot where sleeping is off-limits, she's not your girl. periodt π
okay that's the page π«Ά this came from the ./drivers/gpio corner of the world, dated October 2026, and it's filed under gpiod_set_ar...lue_cansleep(9) in the Kernel API Manual. mwah, go set some GPIOs bestie πβ¨
π¦ 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