Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
block
partitions
karma.c
Go to the documentation of this file.
1
/*
2
* fs/partitions/karma.c
3
* Rio Karma partition info.
4
*
5
* Copyright (C) 2006 Bob Copeland (
[email protected]
)
6
* based on osf.c
7
*/
8
9
#include "
check.h
"
10
#include "
karma.h
"
11
12
int
karma_partition
(
struct
parsed_partitions
*
state
)
13
{
14
int
i
;
15
int
slot
= 1;
16
Sector
sect
;
17
unsigned
char
*
data
;
18
struct
disklabel
{
19
u8
d_reserved[270];
20
struct
d_partition {
21
__le32
p_res;
22
u8
p_fstype
;
23
u8
p_res2[3];
24
__le32
p_offset
;
25
__le32
p_size
;
26
}
d_partitions
[2];
27
u8
d_blank[208];
28
__le16
d_magic
;
29
}
__attribute__
((packed)) *
label
;
30
struct
d_partition *
p
;
31
32
data = read_part_sector(state, 0, §);
33
if
(!data)
34
return
-1;
35
36
label
= (
struct
disklabel
*)data;
37
if
(
le16_to_cpu
(
label
->d_magic) !=
KARMA_LABEL_MAGIC
) {
38
put_dev_sector(sect);
39
return
0;
40
}
41
42
p =
label
->d_partitions;
43
for
(i = 0 ; i < 2; i++, p++) {
44
if
(slot == state->
limit
)
45
break
;
46
47
if
(p->p_fstype == 0x4d &&
le32_to_cpu
(p->p_size)) {
48
put_partition(state, slot,
le32_to_cpu
(p->p_offset),
49
le32_to_cpu
(p->p_size));
50
}
51
slot++;
52
}
53
strlcat
(state->
pp_buf
,
"\n"
,
PAGE_SIZE
);
54
put_dev_sector(sect);
55
return
1;
56
}
57
Generated on Thu Jan 10 2013 13:22:36 for Linux Kernel by
1.8.2