[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH gnumach] Use c_string for dev_name_t in the device subsystem.
From: |
Flavio Cruz |
Subject: |
[PATCH gnumach] Use c_string for dev_name_t in the device subsystem. |
Date: |
Wed, 26 Apr 2023 01:22:53 -0400 |
Added device_open_new and device_open_new_request and reused the old MiG
ID for xxx_device_set_status which has not been in used in the past
decade.
Note that device_open_new is gated on defining
DEVICE_ENABLE_DEVICE_OPEN_NEW because otherwise some hurd servers
wouldn't compile anymore unless patched. This macro allows us to control
the rollout.
---
device/ds_routines.c | 8 ++++++++
include/device/device.defs | 21 +++++++++++++++++++++
include/device/device_request.defs | 8 ++++++++
include/device/device_types.defs | 2 ++
4 files changed, 39 insertions(+)
diff --git a/device/ds_routines.c b/device/ds_routines.c
index 94e61592..1f0bacf4 100644
--- a/device/ds_routines.c
+++ b/device/ds_routines.c
@@ -170,6 +170,14 @@ ds_device_open (ipc_port_t open_port, ipc_port_t
reply_port,
return err;
}
+io_return_t
+ds_device_open_new (ipc_port_t open_port, ipc_port_t reply_port,
+ mach_msg_type_name_t reply_port_type, dev_mode_t mode,
+ const_dev_name_t name, device_t *devp)
+{
+ return ds_device_open (open_port, reply_port, reply_port_type, mode,
name, devp);
+}
+
io_return_t
ds_device_close (device_t dev)
{
diff --git a/include/device/device.defs b/include/device/device.defs
index d1df799d..7f316129 100644
--- a/include/device/device.defs
+++ b/include/device/device.defs
@@ -53,6 +53,7 @@ type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic
#endif /* KERNEL_SERVER */
;
+/* Deprecated in favor of device_open_new. */
routine device_open(
master_port : mach_port_t;
sreplyport reply_port : reply_port_t;
@@ -110,7 +111,27 @@ routine device_read_inband(
out data : io_buf_ptr_inband_t
);
+#if defined(KERNEL_SERVER) || defined(DEVICE_ENABLE_DEVICE_OPEN_NEW)
+routine device_open_new(
+ master_port : mach_port_t;
+ sreplyport reply_port : reply_port_t;
+ mode : dev_mode_t;
+ name : new_dev_name_t;
+ out device : device_t =
+ MACH_MSG_TYPE_PORT_SEND
+ ctype: mach_port_t
+#if KERNEL_SERVER
+ outtran: mach_port_t convert_device_to_port(device_t)
+#else
+#ifdef DEVICE_OUTTRAN
+ outtran: DEVICE_OUTTRAN
+#endif
+#endif /* KERNEL_SERVER */
+ );
+#else
skip; /* old xxx_device_set_status */
+#endif
+
skip; /* old xxx_device_get_status */
skip; /* old xxx_device_set_filter*/
diff --git a/include/device/device_request.defs
b/include/device/device_request.defs
index 7ea8637c..a8af3a89 100644
--- a/include/device/device_request.defs
+++ b/include/device/device_request.defs
@@ -45,6 +45,7 @@ type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE
#endif /* KERNEL_SERVER */
;
+/* Deprecated in favor of device_open_new_request. */
simpleroutine device_open_request(
device_server_port : mach_port_t;
ureplyport reply_port : reply_port_t;
@@ -85,3 +86,10 @@ simpleroutine device_read_request_inband(
in recnum : recnum_t;
in bytes_wanted : int
);
+
+simpleroutine device_open_new_request(
+ device_server_port : mach_port_t;
+ ureplyport reply_port : reply_port_t;
+ in mode : dev_mode_t;
+ in name : new_dev_name_t
+ );
diff --git a/include/device/device_types.defs b/include/device/device_types.defs
index de8dbb02..c74bff51 100644
--- a/include/device/device_types.defs
+++ b/include/device/device_types.defs
@@ -56,6 +56,8 @@ type recnum_t = rpc_recnum_t
type dev_mode_t = uint32_t;
type dev_flavor_t = uint32_t;
type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128);
+type new_dev_name_t = c_string[128]
+ ctype: dev_name_t;
type dev_status_t = array[*:1024] of int;
type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8;
type io_buf_ptr_inband_t= array[*:128] of char;
--
2.39.2
- [PATCH gnumach] Use c_string for dev_name_t in the device subsystem.,
Flavio Cruz <=