linux_sed_opal_sys/
lib.rs

1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4#![allow(clippy::missing_safety_doc)]
5
6include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
7
8/*
9from     include/uapi/linux/sed-opal.h
10#define IOC_OPAL_SAVE		    _IOW('p', 220, struct opal_lock_unlock)
11#define IOC_OPAL_LOCK_UNLOCK	    _IOW('p', 221, struct opal_lock_unlock)
12#define IOC_OPAL_TAKE_OWNERSHIP	    _IOW('p', 222, struct opal_key)
13#define IOC_OPAL_ACTIVATE_LSP       _IOW('p', 223, struct opal_lr_act)
14#define IOC_OPAL_SET_PW             _IOW('p', 224, struct opal_new_pw)
15#define IOC_OPAL_ACTIVATE_USR       _IOW('p', 225, struct opal_session_info)
16#define IOC_OPAL_REVERT_TPR         _IOW('p', 226, struct opal_key)
17#define IOC_OPAL_LR_SETUP           _IOW('p', 227, struct opal_user_lr_setup)
18#define IOC_OPAL_ADD_USR_TO_LR      _IOW('p', 228, struct opal_lock_unlock)
19#define IOC_OPAL_ENABLE_DISABLE_MBR _IOW('p', 229, struct opal_mbr_data)
20#define IOC_OPAL_ERASE_LR           _IOW('p', 230, struct opal_session_info)
21#define IOC_OPAL_SECURE_ERASE_LR    _IOW('p', 231, struct opal_session_info)
22#define IOC_OPAL_PSID_REVERT_TPR    _IOW('p', 232, struct opal_key)
23#define IOC_OPAL_MBR_DONE           _IOW('p', 233, struct opal_mbr_done)
24#define IOC_OPAL_WRITE_SHADOW_MBR   _IOW('p', 234, struct opal_shadow_mbr)
25#define IOC_OPAL_GENERIC_TABLE_RW   _IOW('p', 235, struct opal_read_write_table)
26#define IOC_OPAL_GET_STATUS         _IOR('p', 236, struct opal_status)
27#define IOC_OPAL_GET_LR_STATUS      _IOW('p', 237, struct opal_lr_status)
28#define IOC_OPAL_GET_GEOMETRY       _IOR('p', 238, struct opal_geometry)
29#define IOC_OPAL_DISCOVERY          _IOW('p', 239, struct opal_discovery)
30#define IOC_OPAL_REVERT_LSP         _IOW('p', 240, struct opal_revert_lsp)
31*/
32
33use nix::ioctl_write_ptr;
34
35#[cfg(any(feature="linux_6_1", feature="linux_6_4"))]
36use nix::ioctl_read_buf;
37
38ioctl_write_ptr!(ioc_opal_save, b'p', 220, opal_lock_unlock);
39ioctl_write_ptr!(ioc_opal_lock_unlock, b'p', 221, opal_lock_unlock);
40ioctl_write_ptr!(ioc_opal_take_ownership, b'p', 222, opal_key);
41ioctl_write_ptr!(ioc_opal_activate_lsp, b'p', 223, opal_lr_act);
42ioctl_write_ptr!(ioc_opal_set_pw, b'p', 224, opal_new_pw);
43ioctl_write_ptr!(ioc_opal_activate_usr, b'p', 225, opal_session_info);
44ioctl_write_ptr!(ioc_opal_revert_tpr, b'p', 226, opal_key);
45ioctl_write_ptr!(ioc_opal_lr_setup, b'p', 227, opal_user_lr_setup);
46ioctl_write_ptr!(ioc_opal_add_usr_to_lr, b'p', 228, opal_lock_unlock);
47ioctl_write_ptr!(ioc_opal_enable_disable_mbr, b'p', 229, opal_mbr_data);
48ioctl_write_ptr!(ioc_opal_erase_lr, b'p', 230, opal_session_info);
49ioctl_write_ptr!(ioc_opal_secure_erase_lr, b'p', 231, opal_session_info);
50ioctl_write_ptr!(ioc_opal_psid_revert_tpr, b'p', 232, opal_key);
51ioctl_write_ptr!(ioc_opal_mbr_done, b'p', 233, opal_mbr_done);
52ioctl_write_ptr!(ioc_opal_write_shadow_mbr, b'p', 234, opal_shadow_mbr);
53ioctl_write_ptr!(ioc_opal_generic_table_rw, b'p', 235, opal_read_write_table);
54
55#[cfg(feature="linux_6_1")]
56ioctl_read_buf!(ioc_opal_get_status, b'p', 236, opal_status);
57
58cfg_if::cfg_if! {
59    if #[cfg(feature="linux_6_4")] {
60        ioctl_write_ptr!(ioc_opal_get_lr_status, b'p', 237, opal_lr_status);
61        ioctl_read_buf!(ioc_opal_get_geometry, b'p', 238, opal_geometry);
62    }
63}
64
65cfg_if::cfg_if! {
66    if #[cfg(feature="linux_6_6")] {
67        ioctl_write_ptr!(ioc_opal_discovery, b'p', 239, opal_discovery);
68        ioctl_write_ptr!(ioc_opal_revert_lsp, b'p', 240, opal_revert_lsp);
69    }
70}