Skip to content

Commit 316bf5d

Browse files
committedAug 21, 2022
Latest
1 parent fae8ee6 commit 316bf5d

21 files changed

+53
-63
lines changed
 

‎workspace/linux-support/src/file_descriptors/character_device/CharacterDeviceFileDescriptor.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ impl Read for CharacterDeviceFileDescriptor
123123
EFAULT => panic!("The receive buffer pointer(s) point outside the process's address space"),
124124
EINVAL => panic!("Invalid argument passed"),
125125
EISDIR => panic!("`fd` refers to a directory"),
126-
unexpected_error @ _ => unexpected_error!(read, "character device file descriptor" unexpected_error),
126+
unexpected_error @ _ => unexpected_error!(read, "character device file descriptor", unexpected_error),
127127
}
128128
}
129129
else
@@ -190,7 +190,7 @@ impl Write for CharacterDeviceFileDescriptor
190190
EFAULT => panic!("The write buffer pointer(s) point outside the process's address space"),
191191
EINVAL => panic!("Invalid argument passed"),
192192
EDESTADDRREQ => panic!("`fd` refers to a datagram socket for which a peer address has not been set using `connect()`"),
193-
unexpected_error @ _ => unexpected_error!(write, "character device file descriptor" unexpected_error),
193+
unexpected_error @ _ => unexpected_error!(write, "character device file descriptor", unexpected_error),
194194
}
195195
}
196196
else
@@ -269,7 +269,7 @@ impl CharacterDeviceFileDescriptor
269269
ENOSPC => panic!("`pathname` was to be created but the device containing `pathname` has no room for the new file"),
270270
EPERM => panic!("The `O_NOATIME` flag was specified, but the effective user ID of the caller did not match the owner of the file and the caller was not privileged (`CAP_FOWNER`)"),
271271

272-
unexpected_error @ _ => unexpected_error!(open, "character device file descriptor" unexpected_error),
272+
unexpected_error @ _ => unexpected_error!(open, "character device file descriptor", unexpected_error),
273273
}
274274
)
275275
}

‎workspace/linux-support/src/file_descriptors/directory/DirectoryFileDescriptor.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -803,7 +803,7 @@ impl DirectoryFileDescriptor
803803

804804
error @ SystemCallResult::InclusiveErrorRangeStartsFrom_usize ..= SystemCallResult::InclusiveErrorRangeEndsAt_usize => Err(SystemCallResult::usize_to_system_call_error_number(error).into()),
805805

806-
unexpected @ _ => unexpected_result!(statx, result),
806+
unexpected @ _ => unexpected_result!(statx, unexpected),
807807
}
808808
}
809809

‎workspace/linux-support/src/file_descriptors/file/c/flock.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ impl flock
3737

3838
let process_identifier = match self.l_pid
3939
{
40-
1 ..= i32::MAX => Some(ProcessIdentifierChoice::Other(ProcessIdentifier::from(new_non_zero_i32(pid)))),
40+
pid @ 1 ..= i32::MAX => Some(ProcessIdentifierChoice::Other(ProcessIdentifier::from(new_non_zero_i32(pid)))),
4141

4242
0 => Some(ProcessIdentifierChoice::Current),
4343

‎workspace/linux-support/src/file_descriptors/process_identifier/ProcessIdentifierFileDescriptor.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ impl ProcessIdentifierFileDescriptor
133133
SystemCallResult::EINVAL_usize => panic!("flags is not 0"),
134134
unexpected_error @ SystemCallResult::InclusiveErrorRangeStartsFrom_usize ..= SystemCallResult::InclusiveErrorRangeEndsAt_usize => unexpected_error!(pidfd_getfd, SystemCallResult::usize_to_system_call_error_number(unexpected_error)),
135135

136-
unexpected @ _ => unexpected_result!(pidfd_getfd, result),
136+
unexpected @ _ => unexpected_result!(pidfd_getfd, unexpected),
137137
}
138138
}
139139
}

‎workspace/linux-support/src/file_descriptors/timerfd/TimerFileDescriptor.rs

+4-9
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
// Copyright © 2018-2019 The developers of file-descriptors. See the COPYRIGHT file in the top-level directory of this distribution and at https://raw.githubusercontent.com/lemonrock/file-descriptors/master/COPYRIGHT.
33

44

5-
use crate::syscall::SystemCallResult;
6-
75
/// Represents a timer instance.
86
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
97
pub struct TimerFileDescriptor(RawFd);
@@ -54,12 +52,9 @@ impl TimerFileDescriptor
5452
#[inline(always)]
5553
pub fn new(clock: TimerClock) -> Result<Self, CreationError>
5654
{
57-
use self::CreationError::*;
58-
59-
xxx; fix me.
60-
let result = unsafe { timerfd_create(clock as i32, TFD_NONBLOCK | TFD_CLOEXEC) };
55+
use CreationError::*;
6156

62-
match result
57+
match unsafe { timerfd_create(clock as i32, TFD_NONBLOCK | TFD_CLOEXEC) }
6358
{
6459
raw_file_descriptor @ SystemCallResult::InclusiveMinimumRawFileDescriptor_i32 ..= SystemCallResult::InclusiveMaximumRawFileDescriptor_i32 => Ok(Self(raw_file_descriptor)),
6560

@@ -76,7 +71,7 @@ impl TimerFileDescriptor
7671
}
7772
),
7873

79-
_ => unexpected_result!(timerfd_create, result),
74+
unexpected @ _ => unexpected_result!(timerfd_create, unexpected),
8075
}
8176
}
8277

@@ -121,7 +116,7 @@ impl TimerFileDescriptor
121116

122117
0 => panic!("End of file but we haven't closed the file descriptor"),
123118

124-
unexpected @ _ => unexpected_result!(read, "timer file descriptor", unexpected_error),
119+
unexpected @ _ => unexpected_result!(read, "timer file descriptor", unexpected),
125120
}
126121
}
127122
}

‎workspace/linux-support/src/file_descriptors/timerfd/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use super::*;
66
use self::c::*;
7+
use crate::syscall::SystemCallResult;
78

89

910
mod c;

‎workspace/linux-support/src/file_descriptors/userfaultfd/UserFaultFileDescriptor.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ impl UserFaultFileDescriptor
206206
SystemCallResult::EINVAL_usize => panic!("Invalid combination of flags"),
207207
unexpected_error @ _ => unexpected_error!(userfaultfd, SystemCallResult::usize_to_system_call_error_number(unexpected_error)),
208208

209-
unexpected @ _ => unexpected_result!(userfaultfd, result),
209+
unexpected @ _ => unexpected_result!(userfaultfd, unexpected),
210210
}
211211
}
212212

‎workspace/linux-support/src/io_uring/CompletionResponse.rs

+2-8
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,15 @@ macro_rules! unexpected_error_in_completion
66
{
77
($self: ident, $function_name: tt) =>
88
{
9-
{
10-
const Literal: &'static str = concat!($function_name, " (completion)");
11-
unexpected_error!(Literal, unsafe { SystemCallErrorNumber::from_unchecked($self.0) })
12-
}
9+
unexpected_error!($function_name, "completion", unsafe { SystemCallErrorNumber::from_unchecked($self.0) })
1310
}
1411
}
1512

1613
macro_rules! unexpected_result_in_completion
1714
{
1815
($self: ident, $function_name: tt) =>
1916
{
20-
{
21-
const Literal: &'static str = concat!($function_name, " (completion)");
22-
unexpected_result!(Literal, unsafe { SystemCallErrorNumber::from_unchecked($self.0) })
23-
}
17+
unexpected_result!($function_name, "completion", unsafe { SystemCallErrorNumber::from_unchecked($self.0) })
2418
}
2519
}
2620

‎workspace/linux-support/src/io_uring/IoUringFileDescriptor.rs

+12-1
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ impl IoUringFileDescriptor
131131

132132
error @ SystemCallResult::InclusiveErrorRangeStartsFrom_usize ..= SystemCallResult::InclusiveErrorRangeEndsAt_usize => Err(SystemCallResult::usize_to_system_call_error_number(error).into()),
133133

134-
unexpected @ _ => unexpected_result!(io_uring_setup, result),
134+
unexpected @ _ => unexpected_result!(io_uring_setup, unexpected),
135135
}
136136
}
137137

@@ -199,6 +199,17 @@ impl IoUringFileDescriptor
199199
#[inline(always)]
200200
fn register_buffers(&self, buffers: &[&mut [u8]]) -> io::Result<()>
201201
{
202+
/*
203+
There are 28 errors in this file like the one below.
204+
205+
All need converting to the new error format!!!!
206+
207+
RJC
208+
*/
209+
210+
XXX:
211+
212+
202213
let result = self.register_array(RegisterOperation::RegisterBuffers, buffers);
203214

204215
if likely!(result == 0)

‎workspace/linux-support/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,7 @@ use libc::prctl;
482482
use libc::pread;
483483
use libc::process_vm_readv;
484484
use libc::process_vm_writev;
485+
use libc::pthread_getaffinity_np;
485486
use libc::pthread_self;
486487
use libc::pthread_setaffinity_np;
487488
use libc::pthread_sigmask;

‎workspace/linux-support/src/linux_kernel_modules/LinuxKernelModuleFileBaseName.rs

+4-7
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,12 @@ impl LinuxKernelModuleFileBaseName
6565
}
6666
const flags: i32 = 0;
6767

68-
match system_call_finit_module( file_descriptor, options.as_c_str(), flags)
68+
match system_call_finit_module( file_descriptor, options.as_c_str(), flags).as_usize()
6969
{
7070
0 => Ok(true),
71-
72-
-1 => match SystemCallErrorNumber::from_errno_panic()
73-
{
74-
EPERM => Err(io_error_permission_denied("permission denied")),
75-
unknown @ _ => Err(io_error_other(format!("Error Code was '{}'", unknown))),
76-
},
71+
72+
SystemCallResult::EPERM_usize => Err(io_error_permission_denied("permission denied")),
73+
error @ SystemCallResult::InclusiveErrorRangeStartsFrom_usize ..= SystemCallResult::InclusiveErrorRangeEndsAt_usize => Err(SystemCallResult::usize_to_io_error(error)),
7774

7875
unexpected @ _ => unexpected_result!(finit_module, unexpected),
7976
}

‎workspace/linux-support/src/linux_kernel_modules/LinuxKernelModuleName.rs

+7-15
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
// Copyright © 2020 The developers of linux-support. See the COPYRIGHT file in the top-level directory of this distribution and at https://raw.githubusercontent.com/lemonrock/linux-support/master/COPYRIGHT.
33

44

5-
use crate::syscall::SystemCallResult;
6-
75
/// A Linux kernel module name.
86
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
97
#[derive(Deserialize, Serialize)]
@@ -247,22 +245,16 @@ impl LinuxKernelModuleName
247245
let name: CString = self.into();
248246
const flags: c_long = O_NONBLOCK as c_long;
249247

250-
let system_call_result = system_call_delete_module(name.as_c_str(), flags);
251-
match system_call_result
248+
match system_call_delete_module(name.as_c_str(), flags).as_usize()
252249
{
253250
0 => Ok(true),
254251

255-
-1 => match SystemCallErrorNumber::from_errno_panic()
256-
{
257-
EPERM => Err(io_error_permission_denied("permission denied")),
258-
EBUSY => Err(io_error_permission_denied("busy")),
259-
ENOENT => Ok(false),
260-
EWOULDBLOCK => Err(io_error_permission_denied("in use")),
261-
262-
EFAULT => panic!("EFAULT should not occur"),
263-
264-
unexpected_error @ _ => unexpected_error!(delete_module, SystemCallResult::usize_to_system_call_error_number(unexpected_error)),
265-
},
252+
SystemCallResult::EPERM_usize => Err(io_error_permission_denied("permission denied")),
253+
SystemCallResult::EBUSY_usize => Err(io_error_permission_denied("busy")),
254+
SystemCallResult::ENOENT_usize => Ok(false),
255+
SystemCallResult::EWOULDBLOCK_usize => Err(io_error_permission_denied("in use")),
256+
SystemCallResult::EFAULT_usize => panic!("EFAULT should not occur"),
257+
unexpected_error @ SystemCallResult::InclusiveErrorRangeStartsFrom_usize ..= SystemCallResult::InclusiveErrorRangeEndsAt_usize => unexpected_error!(delete_module, SystemCallResult::usize_to_system_call_error_number(unexpected_error)),
266258

267259
unexpected @ _ => unexpected_result!(delete_module, unexpected),
268260
}

‎workspace/linux-support/src/linux_kernel_modules/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use crate::pci_express::PciDeviceAddress;
1010
use crate::user_and_groups::*;
1111
use crate::syscall::system_call_finit_module;
1212
use crate::syscall::system_call_delete_module;
13+
use crate::syscall::SystemCallResult;
1314

1415

1516
/// Parameters.

‎workspace/linux-support/src/memory/numa/NumaNode.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ impl NumaNode
245245
SystemCallResult::ENODEV_usize => panic!("OneOrMoreTargetNodesIsNotOnline"),
246246
SystemCallResult::ESRCH_usize => if let Other(process_identifier) = process_identifier
247247
{
248-
Err(c(process_identifier))
248+
Err(ProcessDoesNotExist(process_identifier))
249249
}
250250
else
251251
{
@@ -318,8 +318,6 @@ impl NumaNode
318318
{
319319
panic!("We got ESRCH for ourselves?!")
320320
},
321-
SystemCallResult::
322-
SystemCallResult::
323321
SystemCallResult::EPERM_usize => match move_all
324322
{
325323
true => Err(CallerNeedsToHaveSysNiceCapabilityForMoveAll),

‎workspace/linux-support/src/memory/numa/SetMemoryPolicy.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ impl SetMemoryPolicy
7575
SystemCallResult::ENOMEM_usize => panic!("insufficient kernel memory was available."),
7676
unexpected_error @ SystemCallResult::InclusiveErrorRangeStartsFrom_usize ..= SystemCallResult::InclusiveErrorRangeEndsAt_usize => unexpected_error!(set_mempolicy, SystemCallResult::usize_to_system_call_error_number(unexpected_error)),
7777

78-
unexpected @ _ => unexpected_result!(set_mempolicy, result),
78+
unexpected @ _ => unexpected_result!(set_mempolicy, unexpected),
7979
}
8080
}
8181

‎workspace/linux-support/src/mounts/Mount.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ impl<'a> Mount<'a>
8686
unexpected_error @ _ => unexpected_error!(umount, unexpected_error),
8787
},
8888

89-
unexpected @ _ => unexpected!(umount, unexpected),
89+
unexpected @ _ => unexpected_result!(umount, unexpected),
9090
}
9191
}
9292

‎workspace/linux-support/src/resource_limits/SoftAndHardResourceLimit.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ impl SoftAndHardResourceLimit
9292
unexpected_error @ _ => unexpected_error!(setrlimit, unexpected_error),
9393
},
9494

95-
unexpected @ _ => unexpected_result!(setrlimit, result),
95+
unexpected @ _ => unexpected_result!(setrlimit, unexpected),
9696
}
9797
}
9898

@@ -118,7 +118,7 @@ impl SoftAndHardResourceLimit
118118
unexpected_error @ _ => unexpected_error!(getrlimit, unexpected_error),
119119
},
120120

121-
unexpected @ _ => unexpected_result!(getrlimit, result)
121+
unexpected @ _ => unexpected_result!(getrlimit, unexpected)
122122
};
123123

124124
Self

‎workspace/linux-support/src/signals/Signals.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ impl Signals
119119
match SystemCallErrorNumber::from_errno_panic()
120120
{
121121
EINVAL => panic!("Invalid arguments"),
122-
unexpected_error @ _ => unexpected_error!((sigfillset, result), unexpected_error),
122+
unexpected_error @ _ => unexpected_error!(sigfillset, unexpected_error),
123123
}
124124
}
125125
else

‎workspace/linux-support/src/syscall/SystemCallErrorNumber.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -9215,9 +9215,9 @@ impl SystemCallErrorNumber
92159215

92169216
pub(crate) const InclusiveMaximumU16: u16 = 4095;
92179217

9218-
pub(crate) const InclusiveMinimumUsize: Usize = Self::InclusiveMinimumUsize as usize;
9218+
pub(crate) const InclusiveMinimumUsize: usize = Self::InclusiveMinimumUsize as usize;
92199219

9220-
pub(crate) const InclusiveMaximumUsize: Usize = Self::InclusiveMaximumUsize as Usize;
9220+
pub(crate) const InclusiveMaximumUsize: usize = Self::InclusiveMaximumUsize as usize;
92219221

92229222
pub(crate) const InclusiveMinimumI32: i32 = Self::InclusiveMinimumU16 as i32;
92239223

‎workspace/linux-support/src/vectors/vectored_read.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ macro_rules! vectored_read
3838
}
3939
else if likely!(result == -1)
4040
{
41-
match SystemCallErrorNumber::from_errno()
41+
match SystemCallErrorNumber::from_errno_panic()
4242
{
4343
EAGAIN => WouldBlock,
4444
EINTR => Interrupted,
@@ -51,12 +51,12 @@ macro_rules! vectored_read
5151
ENOTCONN => panic!("The socket is associated with a connection-oriented protocol and has not been connected"),
5252
ENOTSOCK => panic!("The argument `sockfd` does not refer to a socket"),
5353
EOPNOTSUPP => panic!("Some flags in the `flags` argument are inappropriate for the socket type"),
54-
unexpected @ _ => unexpected_error!(vectored_read, unexpected),
54+
unexpected @ _ => unexpected_error!(readv, unexpected),
5555
}
5656
}
5757
else
5858
{
59-
unexpected_result!(vectored_read, result)
59+
unexpected_result!(readv, result)
6060
}
6161
)
6262
)

‎workspace/linux-support/src/vectors/vectored_write.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ macro_rules! vectored_write
3737
}
3838
else if likely!(result == -1)
3939
{
40-
match SystemCallErrorNumber::from_errno()
40+
match SystemCallErrorNumber::from_errno_panic()
4141
{
4242
EAGAIN => WouldBlock,
4343
EINTR => Interrupted,
@@ -54,12 +54,12 @@ macro_rules! vectored_write
5454
EMSGSIZE => panic!("The socket type requires that message be sent atomically, and the size of the message to be sent made this impossible"),
5555
EISCONN => panic!("The connection-mode socket was connected already but a recipient was specified"),
5656
EDESTADDRREQ => panic!("The socket is not connection-mode, and no peer address is set"),
57-
unexpected @ _ => unexpected_error!(vectored_write, unexpected),
57+
unexpected @ _ => unexpected_error!(writev, unexpected),
5858
}
5959
}
6060
else
6161
{
62-
unexpected_result!(vectored_write, result)
62+
unexpected_result!(writev, result)
6363
}
6464
)
6565
)

0 commit comments

Comments
 (0)
Please sign in to comment.