@@ -26,7 +26,6 @@ pub unsafe trait ExceptionNumber: Copy {
26
26
fn number ( self ) -> usize ;
27
27
28
28
/// Tries to convert a number to a valid exception.
29
- /// If the conversion fails, it returns an error with the number back.
30
29
fn from_number ( value : usize ) -> Result < Self > ;
31
30
}
32
31
@@ -51,8 +50,7 @@ pub unsafe trait InterruptNumber: Copy {
51
50
/// Converts an interrupt source to its corresponding number.
52
51
fn number ( self ) -> usize ;
53
52
54
- /// Tries to convert a number to a valid interrupt source.
55
- /// If the conversion fails, it returns an error with the number back.
53
+ /// Tries to convert a number to a valid interrupt.
56
54
fn from_number ( value : usize ) -> Result < Self > ;
57
55
}
58
56
@@ -83,7 +81,7 @@ pub unsafe trait ExternalInterruptNumber: InterruptNumber {}
83
81
/// Trait for enums of priority levels.
84
82
///
85
83
/// This trait should be implemented by a peripheral access crate (PAC) on its enum of available
86
- /// priority numbers for a specific device. Each variant must convert to a `u8 ` of its priority level.
84
+ /// priority numbers for a specific device. Each variant must convert to a `usize ` of its priority level.
87
85
///
88
86
/// # Safety
89
87
///
@@ -95,20 +93,19 @@ pub unsafe trait ExternalInterruptNumber: InterruptNumber {}
95
93
/// * `MAX_PRIORITY_NUMBER` must coincide with the highest allowed priority number.
96
94
pub unsafe trait PriorityNumber : Copy {
97
95
/// Number assigned to the highest priority level.
98
- const MAX_PRIORITY_NUMBER : u8 ;
96
+ const MAX_PRIORITY_NUMBER : usize ;
99
97
100
98
/// Converts a priority level to its corresponding number.
101
- fn number ( self ) -> u8 ;
99
+ fn number ( self ) -> usize ;
102
100
103
101
/// Tries to convert a number to a valid priority level.
104
- /// If the conversion fails, it returns an error with the number back.
105
- fn from_number ( value : u8 ) -> Result < Self > ;
102
+ fn from_number ( value : usize ) -> Result < Self > ;
106
103
}
107
104
108
105
/// Trait for enums of HART identifiers.
109
106
///
110
107
/// This trait should be implemented by a peripheral access crate (PAC) on its enum of available
111
- /// HARTs for a specific device. Each variant must convert to a `u16 ` of its HART ID number.
108
+ /// HARTs for a specific device. Each variant must convert to a `usize ` of its HART ID number.
112
109
///
113
110
/// # Safety
114
111
///
@@ -120,14 +117,13 @@ pub unsafe trait PriorityNumber: Copy {
120
117
/// * `MAX_HART_ID_NUMBER` must coincide with the highest allowed HART ID number.
121
118
pub unsafe trait HartIdNumber : Copy {
122
119
/// Highest number assigned to a context.
123
- const MAX_HART_ID_NUMBER : u16 ;
120
+ const MAX_HART_ID_NUMBER : usize ;
124
121
125
122
/// Converts a HART ID to its corresponding number.
126
- fn number ( self ) -> u16 ;
123
+ fn number ( self ) -> usize ;
127
124
128
125
/// Tries to convert a number to a valid HART ID.
129
- /// If the conversion fails, it returns an error with the number back.
130
- fn from_number ( value : u16 ) -> Result < Self > ;
126
+ fn from_number ( value : usize ) -> Result < Self > ;
131
127
}
132
128
133
129
#[ cfg( test) ]
@@ -201,40 +197,40 @@ mod test {
201
197
}
202
198
203
199
unsafe impl PriorityNumber for Priority {
204
- const MAX_PRIORITY_NUMBER : u8 = Self :: P3 as u8 ;
200
+ const MAX_PRIORITY_NUMBER : usize = Self :: P3 as usize ;
205
201
206
202
#[ inline]
207
- fn number ( self ) -> u8 {
203
+ fn number ( self ) -> usize {
208
204
self as _
209
205
}
210
206
211
207
#[ inline]
212
- fn from_number ( number : u8 ) -> Result < Self > {
208
+ fn from_number ( number : usize ) -> Result < Self > {
213
209
match number {
214
210
0 => Ok ( Priority :: P0 ) ,
215
211
1 => Ok ( Priority :: P1 ) ,
216
212
2 => Ok ( Priority :: P2 ) ,
217
213
3 => Ok ( Priority :: P3 ) ,
218
- _ => Err ( Error :: InvalidVariant ( number as _ ) ) ,
214
+ _ => Err ( Error :: InvalidVariant ( number) ) ,
219
215
}
220
216
}
221
217
}
222
218
223
219
unsafe impl HartIdNumber for HartId {
224
- const MAX_HART_ID_NUMBER : u16 = Self :: H2 as u16 ;
220
+ const MAX_HART_ID_NUMBER : usize = Self :: H2 as usize ;
225
221
226
222
#[ inline]
227
- fn number ( self ) -> u16 {
223
+ fn number ( self ) -> usize {
228
224
self as _
229
225
}
230
226
231
227
#[ inline]
232
- fn from_number ( number : u16 ) -> Result < Self > {
228
+ fn from_number ( number : usize ) -> Result < Self > {
233
229
match number {
234
230
0 => Ok ( HartId :: H0 ) ,
235
231
1 => Ok ( HartId :: H1 ) ,
236
232
2 => Ok ( HartId :: H2 ) ,
237
- _ => Err ( Error :: InvalidVariant ( number as _ ) ) ,
233
+ _ => Err ( Error :: InvalidVariant ( number) ) ,
238
234
}
239
235
}
240
236
}
0 commit comments