blob: 7d49139e11306cacd7db7de7dee3c0eb86074dba (
plain)
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
|
/* as-custom.c - Address space composition helper functions.
Copyright (C) 2008 Free Software Foundation, Inc.
Written by Neal H. Walfield <neal@gnu.org>.
This file is part of the GNU Hurd.
The GNU Hurd is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 3 of the
License, or (at your option) any later version.
The GNU Hurd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see
<http://www.gnu.org/licenses/>. */
#include <hurd/activity.h>
#include <hurd/addr.h>
#include <hurd/cap.h>
/* PT designates a cappage or a folio. The cappage or folio is at
address PT_ADDR. Index the object designed by PTE returning the
location of the idx'th capability slot. If the capability is
implicit (in the case of a folio), return a fabricated capability
in *FAKE_SLOT and return FAKE_SLOT. Return NULL on failure. */
typedef struct cap *(*as_object_index_t) (activity_t activity,
struct cap *pt,
addr_t pt_addr, int idx,
struct cap *fake_slot);
/* Expose as_slot_ensure_full_custom and as_insert_custom. */
#define ID_SUFFIX custom
#define OBJECT_INDEX_ARG_TYPE as_object_index_t
/* Require that the caller worry about mutual exclusion. */
#define AS_LOCK
#define AS_UNLOCK
#include "as.c"
|