| // SPDX-License-Identifier: GPL-2.0 | |
| use proc_macro2::TokenStream; | |
| use quote::quote; | |
| /// Please see [`crate::export`] for documentation. | |
| pub(crate) fn export(f: syn::ItemFn) -> TokenStream { | |
| let name = &f.sig.ident; | |
| quote! { | |
| // This verifies that the function has the same signature as the declaration generated by | |
| // bindgen. It makes use of the fact that all branches of an if/else must have the same | |
| // type. | |
| const _: () = { | |
| if true { | |
| ::kernel::bindings::#name | |
| } else { | |
| #name | |
| }; | |
| }; | |
| #[no_mangle] | |
| #f | |
| } | |
| } |