man: --nbi, not --NBI
[wraplinux.git] / wraplinux.h
1 /* ----------------------------------------------------------------------- *
2  *
3  *   Copyright 2008 rPath, Inc. - All Rights Reserved
4  *
5  *   This program is free software; you can redistribute it and/or modify
6  *   it under the terms of the GNU General Public License as published by
7  *   the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
8  *   Boston MA 02110-1301, USA; either version 2 of the License, or
9  *   (at your option) any later version; incorporated herein by reference.
10  *
11  * ----------------------------------------------------------------------- */
12
13 #ifndef WRAPLINUX_H
14 #define WRAPLINUX_H
15
16 #include "config.h"
17
18 #include <inttypes.h>
19 #include <stdbool.h>
20 #include <stdlib.h>
21 #include <stdio.h>
22 #include <sysexits.h>
23
24 #include "segment.h"
25
26 #define WRAPLINUX_PACKAGE "wraplinux"
27
28 extern const char *program;
29
30 struct opt {
31         const char *params;
32         int (*output) (struct segment *, addr_t, FILE *);
33         bool loadhigh;
34 } opt;
35
36 struct string_list {
37         struct string_list *next;
38         const char *str;
39 };
40
41 /* Convenience inline functions */
42 static inline addr_t align_up(addr_t addr, int align)
43 {
44         addr_t align_mask = ((addr_t)1 << align)-1;
45         return (addr + align_mask) & ~align_mask;
46 }
47
48 static inline addr_t align_down(addr_t addr, int align)
49 {
50         addr_t align_mask = ((addr_t)1 << align)-1;
51         return addr & ~align_mask;
52 }
53
54 static inline addr_t padsize(addr_t addr, int align)
55 {
56         addr_t align_mask = ((addr_t)1 << align)-1;
57         return -addr & align_mask;
58 }
59
60 /* linux.c */
61 int wrap_kernel(const char *kernel, const char *cmdline,
62                 const struct string_list *initrd_list, FILE *out);
63
64 /* mapfile.c */
65 void *mapfile(int fd, size_t *len, bool writable);
66 void unmapfile(int fd, void *ptr, size_t len);
67
68 /* xmalloc.c */
69 void *xmalloc(size_t);
70 void *xcalloc(size_t, size_t);
71 int xasprintf(char **strp, const char *fmt, ...);
72
73 /* cwrite.c */
74 size_t c_fwrite(const void *ptr, size_t bytes, FILE *stream);
75 size_t c_writezero(size_t n, FILE *stream);
76
77 #endif