summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorFlavio Cruz <flaviocruz@gmail.com>2023-04-26 01:22:53 -0400
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-04-29 17:12:03 +0200
commit589735c3220793d1e9423bf6ec751b4625309aac (patch)
tree4ef4932d6546034c5d5ae3c996f794ae0f6bda49 /include
parentf9a76508ab2e0b54af753fb017838857a059b3c6 (diff)
Use c_string for dev_name_t in the device subsystem.
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. Message-Id: <ZEi1LV+9ShuXqtcr@jupiter.tail36e24.ts.net>
Diffstat (limited to 'include')
-rw-r--r--include/device/device.defs21
-rw-r--r--include/device/device_request.defs8
-rw-r--r--include/device/device_types.defs2
3 files changed, 31 insertions, 0 deletions
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;