git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
feat: IO polling for file descriptor
[lunaix-os.git]
/
lunaix-os
/
includes
/
lunaix
/
process.h
diff --git
a/lunaix-os/includes/lunaix/process.h
b/lunaix-os/includes/lunaix/process.h
index 6ef1ff0eed297e13f557963a638ff9c9a44e0449..552ac4f58813b88f376a2723ff9c94f4ffe54d44 100644
(file)
--- a/
lunaix-os/includes/lunaix/process.h
+++ b/
lunaix-os/includes/lunaix/process.h
@@
-4,6
+4,7
@@
#include <lunaix/clock.h>
#include <lunaix/ds/waitq.h>
#include <lunaix/fs.h>
#include <lunaix/clock.h>
#include <lunaix/ds/waitq.h>
#include <lunaix/fs.h>
+#include <lunaix/iopoll.h>
#include <lunaix/mm/mm.h>
#include <lunaix/mm/region.h>
#include <lunaix/signal.h>
#include <lunaix/mm/mm.h>
#include <lunaix/mm/region.h>
#include <lunaix/signal.h>
@@
-110,26
+111,32
@@
struct proc_info
struct v_fdtable* fdtable;
struct v_dnode* cwd;
pid_t pgid;
struct v_fdtable* fdtable;
struct v_dnode* cwd;
pid_t pgid;
+
+ struct iopoll pollctx;
};
extern volatile struct proc_info* __current;
};
extern volatile struct proc_info* __current;
+#define resume_process(proc) (proc)->state = PS_READY
+#define pause_process(proc) (proc)->state = PS_PAUSED
+#define block_process(proc) (proc)->state = PS_BLOCKED
+
static inline void
block_current()
{
static inline void
block_current()
{
-
__current->state = PS_BLOCKED
;
+
block_process(__current)
;
}
static inline void
pause_current()
{
}
static inline void
pause_current()
{
-
__current->state = PS_PAUSED
;
+
pause_process(__current)
;
}
static inline void
resume_current()
{
}
static inline void
resume_current()
{
-
__current->state = PS_RUNNING
;
+
resume_process(__current)
;
}
/**
}
/**
@@
-198,6
+205,14
@@
proc_clear_signal(struct proc_info* proc);
// enable interrupt upon transfer
#define TRANSFER_IE 1
// enable interrupt upon transfer
#define TRANSFER_IE 1
+/**
+ * @brief Setup process initial context, used to initiate first switch
+ *
+ * @param proc
+ * @param stop
+ * @param target
+ * @param flags
+ */
void
proc_init_transfer(struct proc_info* proc, ptr_t stop, ptr_t target, int flags);
void
proc_init_transfer(struct proc_info* proc, ptr_t stop, ptr_t target, int flags);