1 /* -*-comment-start: "//";comment-end:""-*-
2 * Mes --- Maxwell Equations of Software
3 * Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
5 * This file is part of Mes.
7 * Mes is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 3 of the License, or (at
10 * your option) any later version.
12 * Mes is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Mes. If not, see <http://www.gnu.org/licenses/>.
34 //syscall (SYS_fork, fd));
48 read (int fd, void* buf, size_t n)
52 //syscall (SYS_write, fd, s, n));
63 : "" (fd), "" (buf), "" (n)
64 : "eax", "ebx", "ecx", "edx"
71 open (char const *s, int flags, ...)
78 "mov (%%eax),%%eax\n\t"
84 //syscall (SYS_open, mode));
93 : "" (s), "" (flags), "" (mode)
94 : "eax", "ebx", "ecx", "edx"
101 waitpid (pid_t pid, int *status_ptr, int options)
105 //syscall (SYS_execve, file_name, argv, env));
111 "mov $0x07,%%eax\n\t"
116 : "" (pid), "" (status_ptr), "" (options)
117 : "eax", "ebx", "ecx", "edx"
124 execve (char const* file_name, char *const argv[], char *const env[])
128 //syscall (SYS_execve, file_name, argv, env));
134 "mov $0x0b,%%eax\n\t"
139 : "" (file_name), "" (argv), "" (env)
140 : "eax", "ebx", "ecx", "edx"
147 chmod (char const *s, int mode)
151 //syscall (SYS_chmod, mode));
155 "mov $0x0f,%%eax\n\t"
160 : "eax", "ebx", "ecx"
167 access (char const *s, int mode)
171 //syscall (SYS_access, mode));
175 "mov $0x21,%%eax\n\t"
180 : "eax", "ebx", "ecx"
194 "mov $0x2d,%%eax\n\t"
207 ioctl (int fd, unsigned long request, ...)
212 "mov %%ebp,%%eax\n\t"
213 "add $0x10,%%eax\n\t"
214 "mov (%%eax),%%eax\n\t"
220 //syscall (SYS_ioctl, fd));
226 "mov $0x36, %%eax\n\t"
230 : "" (fd), "" (request), "" (p)
231 : "eax", "ebx", "ecx", "edx"
242 //syscall (SYS_fsync, fd));
246 "mov $0x76, %%eax\n\t"