@@ -37,21 +37,21 @@ impl UmaKeg {
37
37
align : usize ,
38
38
mut flags : UmaFlags ,
39
39
) -> Self {
40
- if flags. has ( UmaFlags :: Vm ) {
40
+ if flags. has_any ( UmaFlags :: Vm ) {
41
41
todo ! ( )
42
42
}
43
43
44
- if flags. has ( UmaFlags :: ZInit ) {
44
+ if flags. has_any ( UmaFlags :: ZInit ) {
45
45
todo ! ( )
46
46
}
47
47
48
- if flags. has ( UmaFlags :: Malloc | UmaFlags :: RefCnt ) {
48
+ if flags. has_any ( UmaFlags :: Malloc | UmaFlags :: RefCnt ) {
49
49
flags |= UmaFlags :: VToSlab ;
50
50
}
51
51
52
52
// Get header layout.
53
53
let hdr = Layout :: new :: < Slab < ( ) > > ( ) ;
54
- let ( mut hdr, off) = if flags. has ( UmaFlags :: RefCnt ) {
54
+ let ( mut hdr, off) = if flags. has_any ( UmaFlags :: RefCnt ) {
55
55
hdr. extend ( Layout :: new :: < RcFree > ( ) ) . unwrap ( )
56
56
} else {
57
57
hdr. extend ( Layout :: new :: < Free > ( ) ) . unwrap ( )
@@ -64,7 +64,7 @@ impl UmaKeg {
64
64
let available = PAGE_SIZE . get ( ) - hdr. size ( ) ;
65
65
66
66
// Get uk_ppera and uk_ipers.
67
- let ( ppera, ipers) = if flags. has ( UmaFlags :: CacheSpread ) {
67
+ let ( ppera, ipers) = if flags. has_any ( UmaFlags :: CacheSpread ) {
68
68
// Round size.
69
69
let rsize = if ( size. get ( ) & align) == 0 {
70
70
size. get ( )
@@ -93,10 +93,10 @@ impl UmaKeg {
93
93
// TODO: Not sure why we need space at least for 2 free item?
94
94
if ( size. get ( ) + free_item) > available {
95
95
// TODO: Set uk_ppera and uk_rsize.
96
- if !flags. has ( UmaFlags :: Internal ) {
96
+ if !flags. has_any ( UmaFlags :: Internal ) {
97
97
flags |= UmaFlags :: Offpage ;
98
98
99
- if !flags. has ( UmaFlags :: VToSlab ) {
99
+ if !flags. has_any ( UmaFlags :: VToSlab ) {
100
100
flags |= UmaFlags :: Hash ;
101
101
}
102
102
}
@@ -123,7 +123,7 @@ impl UmaKeg {
123
123
let ipers = available / ( rsize + free_item) ;
124
124
125
125
// TODO: Verify if this valid for PAGE_SIZE < 0x4000.
126
- if !flags. has ( UmaFlags :: Internal | UmaFlags :: CacheOnly )
126
+ if !flags. has_any ( UmaFlags :: Internal | UmaFlags :: CacheOnly )
127
127
&& ( available % ( rsize + free_item) ) >= Uma :: MAX_WASTE . get ( )
128
128
&& ( PAGE_SIZE . get ( ) / rsize) > ipers
129
129
{
@@ -134,8 +134,8 @@ impl UmaKeg {
134
134
}
135
135
} ;
136
136
137
- if flags. has ( UmaFlags :: Offpage ) {
138
- if flags. has ( UmaFlags :: RefCnt ) {
137
+ if flags. has_any ( UmaFlags :: Offpage ) {
138
+ if flags. has_any ( UmaFlags :: RefCnt ) {
139
139
// TODO: Set uk_slabzone to slabrefzone.
140
140
} else {
141
141
// TODO: Set uk_slabzone to slabzone.
@@ -150,11 +150,11 @@ impl UmaKeg {
150
150
Self :: page_alloc
151
151
} ;
152
152
153
- if flags. has ( UmaFlags :: MtxClass ) {
153
+ if flags. has_any ( UmaFlags :: MtxClass ) {
154
154
todo ! ( )
155
155
}
156
156
157
- if !flags. has ( UmaFlags :: Offpage ) {
157
+ if !flags. has_any ( UmaFlags :: Offpage ) {
158
158
let space = ppera * PAGE_SIZE . get ( ) ;
159
159
let pgoff = ( space - hdr. size ( ) ) - ipers * free_item;
160
160
@@ -164,7 +164,7 @@ impl UmaKeg {
164
164
}
165
165
}
166
166
167
- if flags. has ( UmaFlags :: Hash ) {
167
+ if flags. has_any ( UmaFlags :: Hash ) {
168
168
todo ! ( )
169
169
}
170
170
@@ -207,7 +207,7 @@ impl UmaKeg {
207
207
/// |PS4 11.00|0x141E20|
208
208
pub fn fetch_slab ( & mut self , _: & UmaZone , flags : Alloc ) -> Option < ( ) > {
209
209
while self . free == 0 {
210
- if flags. has ( Alloc :: NoVm ) {
210
+ if flags. has_any ( Alloc :: NoVm ) {
211
211
return None ;
212
212
}
213
213
@@ -233,10 +233,10 @@ impl UmaKeg {
233
233
/// |---------|--------|
234
234
/// |PS4 11.00|0x13FBA0|
235
235
fn alloc_slab ( & self , flags : Alloc ) {
236
- if self . flags . has ( UmaFlags :: Offpage ) {
236
+ if self . flags . has_any ( UmaFlags :: Offpage ) {
237
237
todo ! ( )
238
238
} else {
239
- let flags = if self . flags . has ( UmaFlags :: Malloc ) {
239
+ let flags = if self . flags . has_any ( UmaFlags :: Malloc ) {
240
240
flags & !Alloc :: Zero
241
241
} else {
242
242
flags | Alloc :: Zero
0 commit comments