6b13f685e
김민수
BSP 최초 추가
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#ifndef __XFS_BIT_H__
#define __XFS_BIT_H__
static inline __uint64_t xfs_mask64hi(int n)
{
return (__uint64_t)-1 << (64 - (n));
}
static inline __uint32_t xfs_mask32lo(int n)
{
return ((__uint32_t)1 << (n)) - 1;
}
static inline __uint64_t xfs_mask64lo(int n)
{
return ((__uint64_t)1 << (n)) - 1;
}
static inline int xfs_highbit32(__uint32_t v)
{
return fls(v) - 1;
}
static inline int xfs_highbit64(__uint64_t v)
{
return fls64(v) - 1;
}
static inline int xfs_lowbit32(__uint32_t v)
{
return ffs(v) - 1;
}
static inline int xfs_lowbit64(__uint64_t v)
{
__uint32_t w = (__uint32_t)v;
int n = 0;
if (w) {
n = ffs(w);
} else {
w = (__uint32_t)(v >> 32);
if (w && (n = ffs(w)))
n += 32;
}
return n - 1;
}
extern int xfs_bitmap_empty(uint *map, uint size);
extern int xfs_contig_bits(uint *map, uint size, uint start_bit);
extern int xfs_next_bit(uint *map, uint size, uint start_bit);
#endif /* __XFS_BIT_H__ */
|