1 /* BLURB lgpl
2 
3                            Coda File System
4                               Release 5
5 
6           Copyright (c) 1987-1999 Carnegie Mellon University
7                   Additional copyrights listed below
8 
9 This  code  is  distributed "AS IS" without warranty of any kind under
10 the  terms of the  GNU  Library General Public Licence  Version 2,  as
11 shown in the file LICENSE. The technical and financial contributors to
12 Coda are listed in the file CREDITS.
13 
14                         Additional copyrights
15                            none currently
16 
17 #*/
18 
19 /*
20  * Segment Loader public definitions
21  */
22 
23 #ifndef _RVM_SEGMENT_H_
24 #define _RVM_SEGMENT_H_
25 
26 #include <rvm/rvm.h>
27 
28 /* taken from rvm_segment_private.h */
29 #define RVM_SEGMENT_HDR_SIZE RVM_PAGE_SIZE /* length of segment header */
30 
31 /* region definition descriptor */
32 typedef struct
33     {
34     rvm_offset_t        offset;         /* region's offset in segment */
35     rvm_length_t        length;         /* region length */
36     char                *vmaddr;        /* mapping address for region */
37     }
38 rvm_region_def_t;
39 
40 /* initializer for region definition descriptor */
41 #define RVM_INIT_REGION(region,off,len,addr) \
42     (region).length = (len); \
43     (region).vmaddr = (addr); \
44     (region).offset = (off);
45 
46 /* error code for damaged segment header */
47 #define RVM_ESEGMENT_HDR 2000
48 
49 /* define regions within a segment for segement loader */
50 extern rvm_return_t rvm_create_segment (
51     char                *DevName,       /* pointer to data device name */
52     rvm_offset_t        DevLength,      /* Length of dataDev if really a device */
53     rvm_options_t       *options,       /* options record for RVM */
54     rvm_length_t        nregions,       /* number of regions defined for segment*/
55     rvm_region_def_t    *region_defs    /* array of region defs for segment */
56     );
57 
58 /* load regions of a segment */
59 extern rvm_return_t rvm_load_segment (
60     char                *DevName,       /* pointer to data device name */
61     rvm_offset_t        DevLength,      /* Length of dataDev if really a device */
62     rvm_options_t       *options,       /* options record for RVM */
63     unsigned long       *nregions,      /* returned -- number of regions mapped */
64     rvm_region_def_t    *regions[]      /* returned array of region descriptors */
65     );
66 
67 /* release regions of a segment */
68 extern rvm_return_t rvm_release_segment (
69     unsigned long       nregions,      /* number of regions mapped */
70     rvm_region_def_t    **regions      /* array of region descriptors */
71     );
72 
73 #endif /* _RVM_SEGMENT_H_ */
74