nand_subop_...dr_start_off(9)
okay so bestie β welcome to the Kernel API Manual β¨ this little page is filed under nand_subop_...dr_start_off(9) (yes the title is truncated, no that's not a typo, the man page tooling just does that π) and it's all about one tiny helper that saves you from a very specific NAND-related heartbreak. Buckle up, it's short but it matters π
πΈ NAME πΈ
nand_subop_get_addr_start_off β get the start offset in an address array π«Ά
β¨ SYNOPSIS β¨
unsigned int nand_subop_get_addr_start_off (const struct nand_subop
*subop , unsigned int instr_idx );
literally the whole signature, make it your screensaver π
π¦ ARGUMENTS π¦
subopβ the entire sub-operation, the whole vibe, the full picture πinstr_idxβ the index of the instruction inside the sub-operation, like which one in the lineup π₯
π DESCRIPTION π
okay so listen. during driver development, one could be tempted to reach straight into the ->addr.addrs field of address instructions. sounds convenient, right? it's wrong π because address instructions might be split β and if you index into that array yourself you're gonna have a bad time.
so instead: given an address instruction, this function returns the offset of the first cycle to issue. that's it. that's the whole slay. β¨
real talk bestie: the direct-field shortcut is the trap here, not a style suggestion. don't do it. use the helper. periodt π
π SEE ALSO π
all the cousins, siblings, and extended family of this function live in the kernel file ./drivers/mtd/nand/raw/nand_base.c β go say hi, they're all iconic π
nand_extract_bits(9), nand_select_target(9), nand_deselect_target(9), nand_release_device(9), nand_bbm_get_next_page(9), nand_block_bad(9), nand_region_is_secured(9), nand_get_device(9), nand_check_wp(9), nand_fill_oob(9), nand_do_write_oob(9), nand_default_block_markbad(9), nand_markbad_bbm(9), nand_block_markbad_lowlevel(9), nand_block_isreserved(9), nand_block_checkbad(9), nand_soft_waitrdy(9), nand_gpio_waitrdy(9), panic_nand_wait(9), nand_reset_interface(9), nand_setup_interface(9), nand_choose_best_sdr_timings(9), nand_choose_best_nvddr_timings(9), nand_choose_best_timings(9), nand_choose_interface_config(9), nand_fill_column_cycles(9), nand_read_page_op(9), nand_read_param_page_op(9), nand_change_read_column_op(9), nand_read_oob_op(9), nand_prog_page_begin_op(9), nand_prog_page_end_op(9), nand_prog_page_op(9), nand_change_write_column_op(9), nand_readid_op(9), nand_status_op(9), nand_exit_status_op(9), nand_erase_op(9), nand_set_features_op(9), nand_get_features_op(9), nand_reset_op(9), nand_read_data_op(9), nand_write_data_op(9), struct nand_op_parser_ctx(9), nand_op_parser_must_split_instr(9), nand_op_parser_match_pat(9), nand_op_parser_exec_op(9), nand_subop_get_num_addr_cyc(9), nand_subop_get_data_start_off(9), nand_subop_get_data_len(9), nand_reset(9), nand_get_features(9), nand_set_features(9), nand_read_page_raw_notsupp(9), nand_read_page_raw(9), nand_monolithic_read_page_raw(9), nand_read_page_raw_syndrome(9), nand_read_page_swecc(9), nand_read_subpage(9), nand_read_page_hwecc(9), nand_read_page_hwecc_oob_first(9), nand_read_page_syndrome(9), nand_transfer_oob(9), nand_setup_read_retry(9), nand_do_read_ops(9), nand_read_oob_std(9), nand_read_oob_syndrome(9), nand_write_oob_std(9), nand_write_oob_syndrome(9), nand_do_read_oob(9), nand_read_oob(9), nand_write_page_raw_notsupp(9), nand_write_page_raw(9), nand_monolithic_write_page_raw(9), nand_write_page_raw_syndrome(9), nand_write_page_swecc(9), nand_write_page_hwecc(9), nand_write_subpage_hwecc(9), nand_write_page_syndrome(9), nand_write_page(9), nand_do_write_ops(9), panic_nand_write(9), nand_write_oob(9), nand_erase(9), nand_erase_nand(9), nand_sync(9), nand_block_isbad(9), nand_block_markbad(9), nand_suspend(9), nand_resume(9), nand_shutdown(9), nand_lock(9), nand_unlock(9), rawnand_dt_parse_gpio_cs(9), nand_scan_ident(9), nand_check_ecc_caps(9), nand_match_ecc_req(9), nand_maximize_ecc(9), nand_ecc_choose_conf(9), nand_scan_tail(9), nand_scan_with_ids(9), nand_cleanup(9)
π§ and that's the whole page, bestie. it shipped out of the./drivers/mtd/nand/rawdirectory, dated October 2026, under the totally-not-truncated titlenand_subop_...dr_start_off(9). go forth and never touch->addr.addrsdirectly again, i'm literally begging π π
π¦ 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