From: Raito Bezarius Date: Sat, 27 Jan 2024 01:34:50 +0000 (+0100) Subject: fix(bindgen): expand the Fix753 workaround for any type and document it X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=5a1975e528cca5d716157b31e3793a8214adf391;p=bcachefs-tools-debian fix(bindgen): expand the Fix753 workaround for any type and document it Offer documentation to the poor people who stumble on this and look for a macro generation mechanism on the Rust side. --- diff --git a/bch_bindgen/build.rs b/bch_bindgen/build.rs index 0a99bed..70f0307 100644 --- a/bch_bindgen/build.rs +++ b/bch_bindgen/build.rs @@ -64,7 +64,7 @@ fn main() { .blocklist_type("srcu_struct") .allowlist_var("BCH_.*") .allowlist_var("KEY_SPEC_.*") - .allowlist_var("Fix753_FMODE_.*") + .allowlist_var("Fix753_.*") .allowlist_var("bch.*") .allowlist_var("__bch2.*") .allowlist_var("__BTREE_ITER.*") diff --git a/bch_bindgen/src/libbcachefs_wrapper.h b/bch_bindgen/src/libbcachefs_wrapper.h index 141b083..5dac92b 100644 --- a/bch_bindgen/src/libbcachefs_wrapper.h +++ b/bch_bindgen/src/libbcachefs_wrapper.h @@ -14,9 +14,22 @@ #include "cmds.h" #include "raid/raid.h" +/* Fix753 is a workaround for https://github.com/rust-lang/rust-bindgen/issues/753 + * Functional macro are not expanded with bindgen, e.g. ioctl are automatically ignored + * from the generation + * + * To avoid this, use `MARK_FIX_753` to force the synthesis of your macro constant. + * It will appear in Rust with its proper name and not Fix753_{name}. + */ -#define MARK_FIX_753(req_name) const blk_mode_t Fix753_##req_name = req_name; +/* MARK_FIX_753: force generate a macro constant in Rust + * + * @type_name - a type for this constant + * @req_name - a name for this constant which will be used inside of Rust + */ +#define MARK_FIX_753(type_name, req_name) const type_name Fix753_##req_name = req_name; + +MARK_FIX_753(blk_mode_t, BLK_OPEN_READ); +MARK_FIX_753(blk_mode_t, BLK_OPEN_WRITE); +MARK_FIX_753(blk_mode_t, BLK_OPEN_EXCL); -MARK_FIX_753(BLK_OPEN_READ); -MARK_FIX_753(BLK_OPEN_WRITE); -MARK_FIX_753(BLK_OPEN_EXCL);