My Kernel v0.1.0
execfmt.h
1
20#ifndef KERNEL_EXECFMT_H
21#define KERNEL_EXECFMT_H
22
23#include <kernel/error.h>
24#include <kernel/types.h>
25
26#include <libalgo/linked_list.h>
27
28struct executable;
29struct file;
30
32struct execfmt {
33 node_t this;
34 const char *name;
35 bool (*match)(const void *);
37 error_t (*load)(struct executable *, void *);
39};
40
47struct executable {
48 void (*entrypoint)(void*);
49};
50
60 const char *exec_path;
61 int argc;
62 const char *argv;
63 size_t argv_size;
64 const char *envp;
65 size_t envp_size;
66};
67
69error_t execfmt_register(struct execfmt *);
70
78error_t execfmt_execute(const struct exec_params *);
79
80#endif /* KERNEL_EXECFMT_H */
81
error_t execfmt_execute(const struct exec_params *)
Execute a given executable file's content.
Definition: execfmt.c:137
error_t execfmt_register(struct execfmt *)
Register a new executable file format.
Definition: execfmt.c:21
Executable parameters.
Definition: execfmt.h:59
const char * argv
Definition: execfmt.h:62
const char * envp
Definition: execfmt.h:64
size_t argv_size
Definition: execfmt.h:63
size_t envp_size
Definition: execfmt.h:65
An executable file format.
Definition: execfmt.h:32
error_t(* load)(struct executable *, void *)
Load an executable file in memory.
Definition: execfmt.h:37
const char * name
Format's name.
Definition: execfmt.h:34
bool(* match)(const void *)
Check whether an executable file is of the given format.
Definition: execfmt.h:35
Represents a loaded executable.
Definition: execfmt.h:47
Opened file description.
Definition: file.h:29
Intrusive doubly-linked list node.
Definition: linked_list.h:27