From 589735c3220793d1e9423bf6ec751b4625309aac Mon Sep 17 00:00:00 2001 From: Flavio Cruz Date: Wed, 26 Apr 2023 01:22:53 -0400 Subject: 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: --- include/device/device.defs | 21 +++++++++++++++++++++ include/device/device_request.defs | 8 ++++++++ include/device/device_types.defs | 2 ++ 3 files changed, 31 insertions(+) (limited to 'include') 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; -- cgit v1.2.3