kernel: ~Stack can grow now (upto 4MB)
[meinos.git] / apps / init / exe.c
blobbbcc4d3732ece8e8aa9f3364299b156f72adadc5
1 /*
2 meinOS - A unix-like x86 microkernel operating system
3 Copyright (C) 2008 Janosch Gräf <janosch.graef@gmx.net>
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, either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
19 #include <sys/types.h>
20 #include <stdlib.h>
22 #include "init.h"
23 #include "exe_elf.h"
25 exe_t *exe_create(const char *file) {
26 exe_t *exe = malloc(sizeof(exe_t*));
28 // try ELF
29 exe->data = elf_create(file);
30 if (exe->data!=NULL) {
31 exe->type = EXE_ELF;
32 return exe;
34 else elf_destroy((elf_t*)exe->data);
36 // not an executable
37 free(exe);
38 return NULL;
41 void *exe_load(exe_t *exe,pid_t pid) {
42 if (exe->type==EXE_ELF) return elf_load((elf_t*)exe->data,pid);
43 else return NULL;
46 void exe_destroy(exe_t *exe) {
47 if (exe->type==EXE_ELF) elf_destroy((elf_t*)exe->data);
48 free(exe);