binder: use enum for binder ioctls
authorAlice Ryhl <aliceryhl@google.com>
Fri, 8 Dec 2023 15:28:01 +0000 (15:28 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Dec 2023 16:06:45 +0000 (17:06 +0100)
All of the other constants in this file are defined using enums, so make
the constants more consistent by defining the ioctls in an enum as well.

This is necessary for Rust Binder since the _IO macros are too
complicated for bindgen to see that they expand to integer constants.
Replacing the #defines with an enum forces bindgen to evaluate them
properly, which allows us to access them from Rust.

I originally intended to include this change in the first patch of the
Rust Binder patchset [1], but at plumbers Carlos Llamas told me that
this change has been discussed previously [2] and suggested that I send
it upstream separately.

Link: https://lore.kernel.org/rust-for-linux/20231101-rust-binder-v1-1-08ba9197f637@google.com/
Link: https://lore.kernel.org/all/YoIK2l6xbQMPGZHy@kroah.com/
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
Acked-by: Carlos Llamas <cmllamas@google.com>
Link: https://lore.kernel.org/r/20231208152801.3425772-1-aliceryhl@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/uapi/linux/android/binder.h

index 5f636b5afcd741398300786733453e0f2407ecd5..d44a8118b2ed6e328c8a99a13e0cecadd6f11b52 100644 (file)
@@ -251,20 +251,22 @@ struct binder_extended_error {
        __s32   param;
 };
 
-#define BINDER_WRITE_READ              _IOWR('b', 1, struct binder_write_read)
-#define BINDER_SET_IDLE_TIMEOUT                _IOW('b', 3, __s64)
-#define BINDER_SET_MAX_THREADS         _IOW('b', 5, __u32)
-#define BINDER_SET_IDLE_PRIORITY       _IOW('b', 6, __s32)
-#define BINDER_SET_CONTEXT_MGR         _IOW('b', 7, __s32)
-#define BINDER_THREAD_EXIT             _IOW('b', 8, __s32)
-#define BINDER_VERSION                 _IOWR('b', 9, struct binder_version)
-#define BINDER_GET_NODE_DEBUG_INFO     _IOWR('b', 11, struct binder_node_debug_info)
-#define BINDER_GET_NODE_INFO_FOR_REF   _IOWR('b', 12, struct binder_node_info_for_ref)
-#define BINDER_SET_CONTEXT_MGR_EXT     _IOW('b', 13, struct flat_binder_object)
-#define BINDER_FREEZE                  _IOW('b', 14, struct binder_freeze_info)
-#define BINDER_GET_FROZEN_INFO         _IOWR('b', 15, struct binder_frozen_status_info)
-#define BINDER_ENABLE_ONEWAY_SPAM_DETECTION    _IOW('b', 16, __u32)
-#define BINDER_GET_EXTENDED_ERROR      _IOWR('b', 17, struct binder_extended_error)
+enum {
+       BINDER_WRITE_READ               = _IOWR('b', 1, struct binder_write_read),
+       BINDER_SET_IDLE_TIMEOUT         = _IOW('b', 3, __s64),
+       BINDER_SET_MAX_THREADS          = _IOW('b', 5, __u32),
+       BINDER_SET_IDLE_PRIORITY        = _IOW('b', 6, __s32),
+       BINDER_SET_CONTEXT_MGR          = _IOW('b', 7, __s32),
+       BINDER_THREAD_EXIT              = _IOW('b', 8, __s32),
+       BINDER_VERSION                  = _IOWR('b', 9, struct binder_version),
+       BINDER_GET_NODE_DEBUG_INFO      = _IOWR('b', 11, struct binder_node_debug_info),
+       BINDER_GET_NODE_INFO_FOR_REF    = _IOWR('b', 12, struct binder_node_info_for_ref),
+       BINDER_SET_CONTEXT_MGR_EXT      = _IOW('b', 13, struct flat_binder_object),
+       BINDER_FREEZE                   = _IOW('b', 14, struct binder_freeze_info),
+       BINDER_GET_FROZEN_INFO          = _IOWR('b', 15, struct binder_frozen_status_info),
+       BINDER_ENABLE_ONEWAY_SPAM_DETECTION     = _IOW('b', 16, __u32),
+       BINDER_GET_EXTENDED_ERROR       = _IOWR('b', 17, struct binder_extended_error),
+};
 
 /*
  * NOTE: Two special error codes you should check for when calling