From c13c9c96943b312bc9c404d8cbe95394b77f96d7 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Mon, 31 Aug 2026 06:43:48 +0000 Subject: jobs --- include/job.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ include/setting.h | 8 ++++++++ 2 files changed, 59 insertions(+) create mode 100644 include/job.h create mode 100644 include/setting.h (limited to 'include') diff --git a/include/job.h b/include/job.h new file mode 100644 index 0000000..cbd9b30 --- /dev/null +++ b/include/job.h @@ -0,0 +1,51 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "setting.h" + +#define MAXLINE 1024 /* max line size */ +#define MAXARGS 128 /* max args on a command line */ +#define MAXJOBS 16 /* max jobs at any point in time */ +#define MAXJID 1<<16 /* max job ID */ + +#define UNDEF 0 /* undefined */ +#define FG 1 /* running in foreground */ +#define BG 2 /* running in background */ +#define ST 3 /* stopped */ + + +namespace ov4 +{ + +extern struct job_t jobs[]; +extern int nextjid; + +struct job_t { /* The job struct */ + pid_t pid; /* job PID */ + int jid; /* job ID [1, 2, ...] */ + int state; /* UNDEF, BG, FG, or ST */ + char cmdline[MAXLINE]; /* command line */ +}; + +void clearjob(struct job_t *job); +void initjobs(struct job_t *jobs); +int maxjid(struct job_t *jobs); +int addjob(struct job_t *jobs, pid_t pid, int state, char *cmdline); +int deletejob(struct job_t *jobs, pid_t pid); +pid_t fgpid(struct job_t *jobs); +struct job_t *getjobpid(struct job_t *jobs, pid_t pid); +struct job_t *getjobjid(struct job_t *jobs, int jid); +int pid2jid(pid_t pid); +void listjobs(struct job_t *jobs); +bool job_suspend(struct job_t *jobs, pid_t pid); + +} diff --git a/include/setting.h b/include/setting.h new file mode 100644 index 0000000..ec4f08b --- /dev/null +++ b/include/setting.h @@ -0,0 +1,8 @@ +#pragma once + +namespace ov4 +{ + +extern int verbose; + +} -- cgit v1.3.1-4-g156e