34 |
|
|
35 |
struct deva |
struct deva |
36 |
{ |
{ |
|
/* The capability object must be the first member of this |
|
|
struct. */ |
|
|
struct hurd_cap_obj obj; |
|
|
|
|
37 |
/* FIXME: More stuff. */ |
/* FIXME: More stuff. */ |
38 |
|
int foo; |
39 |
}; |
}; |
40 |
typedef struct deva *deva_t; |
typedef struct deva *deva_t; |
41 |
|
|
43 |
static void |
static void |
44 |
deva_reinit (hurd_cap_class_t cap_class, hurd_cap_obj_t obj) |
deva_reinit (hurd_cap_class_t cap_class, hurd_cap_obj_t obj) |
45 |
{ |
{ |
46 |
deva_t deva = (deva_t) obj; |
deva_t deva = hurd_cap_obj_to_user (deva_t, obj); |
47 |
|
|
48 |
/* FIXME: Release resources. */ |
/* FIXME: Release resources. */ |
49 |
} |
} |
83 |
error_t |
error_t |
84 |
deva_class_init () |
deva_class_init () |
85 |
{ |
{ |
86 |
return hurd_cap_class_init (&deva_class, sizeof (struct deva), |
return hurd_cap_class_init (&deva_class, deva_t, |
|
__alignof__ (struct deva), |
|
87 |
NULL, NULL, deva_reinit, NULL, |
NULL, NULL, deva_reinit, NULL, |
88 |
deva_demuxer); |
deva_demuxer); |
89 |
} |
} |
95 |
deva_alloc (hurd_cap_obj_t *r_obj) |
deva_alloc (hurd_cap_obj_t *r_obj) |
96 |
{ |
{ |
97 |
error_t err; |
error_t err; |
98 |
|
hurd_cap_obj_t obj; |
99 |
deva_t deva; |
deva_t deva; |
100 |
|
|
101 |
err = hurd_cap_class_alloc (&deva_class, (hurd_cap_obj_t *) &deva); |
err = hurd_cap_class_alloc (&deva_class, &obj); |
102 |
if (err) |
if (err) |
103 |
return err; |
return err; |
104 |
|
|
105 |
|
deva = hurd_cap_obj_to_user (deva_t, obj); |
106 |
|
|
107 |
/* FIXME: Add some stuff. */ |
/* FIXME: Add some stuff. */ |
108 |
|
|
109 |
*r_obj = &deva->obj; |
*r_obj = obj; |
110 |
return 0; |
return 0; |
111 |
} |
} |