xref: /openbmc/u-boot/include/os.h (revision 1e52fea3)
1 /*
2  * Operating System Interface
3  *
4  * This provides access to useful OS routines for the sandbox architecture.
5  * They are kept in a separate file so we can include system headers.
6  *
7  * Copyright (c) 2011 The Chromium OS Authors.
8  * See file CREDITS for list of people who contributed to this
9  * project.
10  *
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License as
13  * published by the Free Software Foundation; either version 2 of
14  * the License, or (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
24  * MA 02111-1307 USA
25  */
26 
27 #ifndef __OS_H__
28 #define __OS_H__
29 
30 struct sandbox_state;
31 
32 /**
33  * Access to the OS read() system call
34  *
35  * \param fd	File descriptor as returned by os_open()
36  * \param buf	Buffer to place data
37  * \param count	Number of bytes to read
38  * \return number of bytes read, or -1 on error
39  */
40 ssize_t os_read(int fd, void *buf, size_t count);
41 
42 /**
43  * Access to the OS write() system call
44  *
45  * \param fd	File descriptor as returned by os_open()
46  * \param buf	Buffer containing data to write
47  * \param count	Number of bytes to write
48  * \return number of bytes written, or -1 on error
49  */
50 ssize_t os_write(int fd, const void *buf, size_t count);
51 
52 /**
53  * Access to the OS lseek() system call
54  *
55  * \param fd	File descriptor as returned by os_open()
56  * \param offset	File offset (based on whence)
57  * \param whence	Position offset is relative to (see below)
58  * \return new file offset
59  */
60 off_t os_lseek(int fd, off_t offset, int whence);
61 
62 /* Defines for "whence" in os_lseek() */
63 #define OS_SEEK_SET	0
64 #define OS_SEEK_CUR	1
65 #define OS_SEEK_END	2
66 
67 /**
68  * Access to the OS open() system call
69  *
70  * \param pathname	Pathname of file to open
71  * \param flags		Flags, like O_RDONLY, O_RDWR
72  * \return file descriptor, or -1 on error
73  */
74 int os_open(const char *pathname, int flags);
75 
76 #define OS_O_RDONLY	0
77 #define OS_O_WRONLY	1
78 #define OS_O_RDWR	2
79 #define OS_O_MASK	3	/* Mask for read/write flags */
80 #define OS_O_CREAT	0100
81 
82 /**
83  * Access to the OS close() system call
84  *
85  * \param fd	File descriptor to close
86  * \return 0 on success, -1 on error
87  */
88 int os_close(int fd);
89 
90 /**
91  * Access to the OS exit() system call
92  *
93  * This exits with the supplied return code, which should be 0 to indicate
94  * success.
95  *
96  * @param exit_code	exit code for U-Boot
97  */
98 void os_exit(int exit_code) __attribute__((noreturn));
99 
100 /**
101  * Put tty into raw mode to mimic serial console better
102  */
103 void os_tty_raw(int fd);
104 
105 /**
106  * Acquires some memory from the underlying os.
107  *
108  * \param length	Number of bytes to be allocated
109  * \return Pointer to length bytes or NULL on error
110  */
111 void *os_malloc(size_t length);
112 
113 /**
114  * Access to the usleep function of the os
115  *
116  * \param usec Time to sleep in micro seconds
117  */
118 void os_usleep(unsigned long usec);
119 
120 /**
121  * Gets a monotonic increasing number of nano seconds from the OS
122  *
123  * \return A monotonic increasing time scaled in nano seconds
124  */
125 u64 os_get_nsec(void);
126 
127 /**
128  * Parse arguments and update sandbox state.
129  *
130  * @param state		Sandbox state to update
131  * @param argc		Argument count
132  * @param argv		Argument vector
133  * @return 0 if ok, and program should continue;
134  *	1 if ok, but program should stop;
135  *	-1 on error: program should terminate.
136  */
137 int os_parse_args(struct sandbox_state *state, int argc, char *argv[]);
138 
139 #endif
140