summaryrefslogtreecommitdiff
path: root/components/lwp/lwp_pid.h
diff options
context:
space:
mode:
Diffstat (limited to 'components/lwp/lwp_pid.h')
-rw-r--r--components/lwp/lwp_pid.h38
1 files changed, 31 insertions, 7 deletions
diff --git a/components/lwp/lwp_pid.h b/components/lwp/lwp_pid.h
index c9e8b945b7..5e170f652d 100644
--- a/components/lwp/lwp_pid.h
+++ b/components/lwp/lwp_pid.h
@@ -11,14 +11,14 @@
#ifndef LWP_PID_H__
#define LWP_PID_H__
-#include "lwp.h"
-
#ifdef __cplusplus
extern "C" {
#endif
-#define LWP_CREATE_FLAG_NONE 0x0000
-#define LWP_CREATE_FLAG_ALLOC_PID 0x0001 /* allocate pid on lwp object create */
+#define LWP_CREATE_FLAG_NONE 0x0000
+#define LWP_CREATE_FLAG_ALLOC_PID 0x0001 /* allocate pid on lwp object create */
+#define LWP_CREATE_FLAG_INIT_USPACE 0x0002 /* do user space initialization */
+#define LWP_CREATE_FLAG_NOTRACE_EXEC 0x0004 /* not trace if execve() after fork() */
struct rt_lwp;
@@ -46,6 +46,7 @@ void lwp_free(struct rt_lwp* lwp);
int lwp_ref_inc(struct rt_lwp *lwp);
int lwp_ref_dec(struct rt_lwp *lwp);
+struct rt_lwp* lwp_from_pid_raw_locked(pid_t pid);
struct rt_lwp* lwp_from_pid_locked(pid_t pid);
pid_t lwp_to_pid(struct rt_lwp* lwp);
@@ -54,7 +55,29 @@ char* lwp_pid2name(int32_t pid);
int lwp_getpid(void);
-pid_t lwp_waitpid(const pid_t pid, int *status, int options);
+struct rusage
+{
+ struct timeval ru_utime;
+ struct timeval ru_stime;
+
+ long ru_maxrss;
+ long ru_ixrss;
+ long ru_idrss;
+ long ru_isrss;
+ long ru_minflt;
+ long ru_majflt;
+ long ru_nswap;
+ long ru_inblock;
+ long ru_oublock;
+ long ru_msgsnd;
+ long ru_msgrcv;
+ long ru_nsignals;
+ long ru_nvcsw;
+ long ru_nivcsw;
+ long reserved[16];
+};
+pid_t lwp_waitpid(const pid_t pid, int *status, int options, struct rusage *ru);
+rt_err_t lwp_waitpid_kick(struct rt_lwp *parent, struct rt_lwp *self_lwp);
pid_t waitpid(pid_t pid, int *status, int options);
long list_process(void);
@@ -85,8 +108,9 @@ rt_inline void lwp_from_pid_release_lock(struct rt_lwp *lwp)
lwp_ref_dec(lwp);
}
-void lwp_thread_exit(rt_thread_t thread, rt_base_t status);
-void lwp_exit(struct rt_lwp *lwp, rt_base_t status);
+typedef rt_base_t lwp_status_t;
+void lwp_thread_exit(rt_thread_t thread, int status);
+void lwp_exit(struct rt_lwp *lwp, lwp_status_t status);
#ifdef __cplusplus
}