sleep finished
This commit is contained in:
BIN
.cache/clangd/index/bio.c.24B057DC9C4854FB.idx
Normal file
BIN
.cache/clangd/index/bio.c.24B057DC9C4854FB.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/buf.h.B4C0E375EE6D85D8.idx
Normal file
BIN
.cache/clangd/index/buf.h.B4C0E375EE6D85D8.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/cat.c.E6B5239F172B69BA.idx
Normal file
BIN
.cache/clangd/index/cat.c.E6B5239F172B69BA.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/console.c.EDE3343BDF30AA18.idx
Normal file
BIN
.cache/clangd/index/console.c.EDE3343BDF30AA18.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/defs.h.FA84750F49A8208D.idx
Normal file
BIN
.cache/clangd/index/defs.h.FA84750F49A8208D.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/echo.c.82273272593DDBF9.idx
Normal file
BIN
.cache/clangd/index/echo.c.82273272593DDBF9.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/elf.h.F16A0F7955924FF5.idx
Normal file
BIN
.cache/clangd/index/elf.h.F16A0F7955924FF5.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/entry.S.9D6A792A4C1D9732.idx
Normal file
BIN
.cache/clangd/index/entry.S.9D6A792A4C1D9732.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/exec.c.8AD2B91A70ACA0F3.idx
Normal file
BIN
.cache/clangd/index/exec.c.8AD2B91A70ACA0F3.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/fcntl.h.6652379187B12E87.idx
Normal file
BIN
.cache/clangd/index/fcntl.h.6652379187B12E87.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/file.c.820157DB6CAAC2B0.idx
Normal file
BIN
.cache/clangd/index/file.c.820157DB6CAAC2B0.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/file.h.79D60CC505A3688C.idx
Normal file
BIN
.cache/clangd/index/file.h.79D60CC505A3688C.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/forktest.c.507FAF0654C460C4.idx
Normal file
BIN
.cache/clangd/index/forktest.c.507FAF0654C460C4.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/fs.c.58356A9A738811E1.idx
Normal file
BIN
.cache/clangd/index/fs.c.58356A9A738811E1.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/fs.h.3686D48D80A26768.idx
Normal file
BIN
.cache/clangd/index/fs.h.3686D48D80A26768.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/grep.c.DD651FCEFC445A0B.idx
Normal file
BIN
.cache/clangd/index/grep.c.DD651FCEFC445A0B.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/grind.c.D7093F5661987A97.idx
Normal file
BIN
.cache/clangd/index/grind.c.D7093F5661987A97.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/init.c.6F85DBCB8299D7E4.idx
Normal file
BIN
.cache/clangd/index/init.c.6F85DBCB8299D7E4.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/initcode.S.BBCFEB1FDBC942C0.idx
Normal file
BIN
.cache/clangd/index/initcode.S.BBCFEB1FDBC942C0.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/kalloc.c.EAD3206FD345D89F.idx
Normal file
BIN
.cache/clangd/index/kalloc.c.EAD3206FD345D89F.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/kernelvec.S.378D57D64218706B.idx
Normal file
BIN
.cache/clangd/index/kernelvec.S.378D57D64218706B.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/kill.c.9066F57D14D15861.idx
Normal file
BIN
.cache/clangd/index/kill.c.9066F57D14D15861.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/ln.c.568D0D92ECB1AC55.idx
Normal file
BIN
.cache/clangd/index/ln.c.568D0D92ECB1AC55.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/log.c.6FD36E098D038E2E.idx
Normal file
BIN
.cache/clangd/index/log.c.6FD36E098D038E2E.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/ls.c.573C227ACE78EC31.idx
Normal file
BIN
.cache/clangd/index/ls.c.573C227ACE78EC31.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/main.c.E95EF6736522E87C.idx
Normal file
BIN
.cache/clangd/index/main.c.E95EF6736522E87C.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/memlayout.h.60CFF8F9C2E8038C.idx
Normal file
BIN
.cache/clangd/index/memlayout.h.60CFF8F9C2E8038C.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/mkdir.c.3DB26FD9334A4664.idx
Normal file
BIN
.cache/clangd/index/mkdir.c.3DB26FD9334A4664.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/mkfs.c.43FCEF60CDDABED5.idx
Normal file
BIN
.cache/clangd/index/mkfs.c.43FCEF60CDDABED5.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/param.h.1D9016560447FB14.idx
Normal file
BIN
.cache/clangd/index/param.h.1D9016560447FB14.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/pipe.c.BBCBAB75B511AA59.idx
Normal file
BIN
.cache/clangd/index/pipe.c.BBCBAB75B511AA59.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/plic.c.7A9570ABA62D6877.idx
Normal file
BIN
.cache/clangd/index/plic.c.7A9570ABA62D6877.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/printf.c.34E3B3315EFCE18D.idx
Normal file
BIN
.cache/clangd/index/printf.c.34E3B3315EFCE18D.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/printf.c.531ABD1B636C8B1E.idx
Normal file
BIN
.cache/clangd/index/printf.c.531ABD1B636C8B1E.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/proc.c.D7FEDD31A3658231.idx
Normal file
BIN
.cache/clangd/index/proc.c.D7FEDD31A3658231.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/proc.h.3AC7129B3221FEF2.idx
Normal file
BIN
.cache/clangd/index/proc.h.3AC7129B3221FEF2.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/riscv.h.36A01EBE0D6E8DFB.idx
Normal file
BIN
.cache/clangd/index/riscv.h.36A01EBE0D6E8DFB.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/rm.c.A4FB4F197059BFD1.idx
Normal file
BIN
.cache/clangd/index/rm.c.A4FB4F197059BFD1.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/sh.c.CB5D6A342B15B608.idx
Normal file
BIN
.cache/clangd/index/sh.c.CB5D6A342B15B608.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/sleep.c.FB7A3FFDCE014550.idx
Normal file
BIN
.cache/clangd/index/sleep.c.FB7A3FFDCE014550.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/sleeplock.c.C737AFEA3824B290.idx
Normal file
BIN
.cache/clangd/index/sleeplock.c.C737AFEA3824B290.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/sleeplock.h.AB9DCF968FE1602B.idx
Normal file
BIN
.cache/clangd/index/sleeplock.h.AB9DCF968FE1602B.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/spinlock.c.118C42BEA2603680.idx
Normal file
BIN
.cache/clangd/index/spinlock.c.118C42BEA2603680.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/spinlock.h.ED3FF238220E61EC.idx
Normal file
BIN
.cache/clangd/index/spinlock.h.ED3FF238220E61EC.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/start.c.89E95DBE47605461.idx
Normal file
BIN
.cache/clangd/index/start.c.89E95DBE47605461.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/stat.h.86672BD094069739.idx
Normal file
BIN
.cache/clangd/index/stat.h.86672BD094069739.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/stressfs.c.B3275037285EE054.idx
Normal file
BIN
.cache/clangd/index/stressfs.c.B3275037285EE054.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/string.c.3EE6B1D0B8CDCB1D.idx
Normal file
BIN
.cache/clangd/index/string.c.3EE6B1D0B8CDCB1D.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/swtch.S.4ADC9FB12CE0846F.idx
Normal file
BIN
.cache/clangd/index/swtch.S.4ADC9FB12CE0846F.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/syscall.c.3F5C883044FCFCF0.idx
Normal file
BIN
.cache/clangd/index/syscall.c.3F5C883044FCFCF0.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/syscall.h.0731AA8A1C559D11.idx
Normal file
BIN
.cache/clangd/index/syscall.h.0731AA8A1C559D11.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/sysfile.c.2F63584A87B4C330.idx
Normal file
BIN
.cache/clangd/index/sysfile.c.2F63584A87B4C330.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/sysproc.c.C8BB7E1E7CB91706.idx
Normal file
BIN
.cache/clangd/index/sysproc.c.C8BB7E1E7CB91706.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/trampoline.S.BDFD062CFF52377F.idx
Normal file
BIN
.cache/clangd/index/trampoline.S.BDFD062CFF52377F.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/trap.c.23537A97EF180684.idx
Normal file
BIN
.cache/clangd/index/trap.c.23537A97EF180684.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/types.h.70696683BE2EC723.idx
Normal file
BIN
.cache/clangd/index/types.h.70696683BE2EC723.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/uart.c.5FD657EACB02A601.idx
Normal file
BIN
.cache/clangd/index/uart.c.5FD657EACB02A601.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/ulib.c.3796A394AA0B4D78.idx
Normal file
BIN
.cache/clangd/index/ulib.c.3796A394AA0B4D78.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/umalloc.c.A8E0D49313A5FD66.idx
Normal file
BIN
.cache/clangd/index/umalloc.c.A8E0D49313A5FD66.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/user.h.0E1D177ECDFC39A7.idx
Normal file
BIN
.cache/clangd/index/user.h.0E1D177ECDFC39A7.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/usertests.c.6C9F208F54570D61.idx
Normal file
BIN
.cache/clangd/index/usertests.c.6C9F208F54570D61.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/virtio.h.792FB564DB2391F6.idx
Normal file
BIN
.cache/clangd/index/virtio.h.792FB564DB2391F6.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/virtio_disk.c.769BA37BC7FB44CB.idx
Normal file
BIN
.cache/clangd/index/virtio_disk.c.769BA37BC7FB44CB.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/vm.c.0DE519F162B02AC5.idx
Normal file
BIN
.cache/clangd/index/vm.c.0DE519F162B02AC5.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/wc.c.ED2C4745D8FA3371.idx
Normal file
BIN
.cache/clangd/index/wc.c.ED2C4745D8FA3371.idx
Normal file
Binary file not shown.
BIN
.cache/clangd/index/zombie.c.72B560D8AFCD8B22.idx
Normal file
BIN
.cache/clangd/index/zombie.c.72B560D8AFCD8B22.idx
Normal file
Binary file not shown.
1
Makefile
1
Makefile
@ -188,6 +188,7 @@ UPROGS=\
|
|||||||
$U/_grind\
|
$U/_grind\
|
||||||
$U/_wc\
|
$U/_wc\
|
||||||
$U/_zombie\
|
$U/_zombie\
|
||||||
|
$U/_sleep\
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
1486
compile_commands.json
Normal file
1486
compile_commands.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,7 @@
|
|||||||
#define T_DIR 1 // Directory
|
#define T_DIR 1 // Directory
|
||||||
#define T_FILE 2 // File
|
#define T_FILE 2 // File
|
||||||
#define T_DEVICE 3 // Device
|
#define T_DEVICE 3 // Device
|
||||||
|
#include "types.h"
|
||||||
|
|
||||||
struct stat {
|
struct stat {
|
||||||
int dev; // File system's disk device
|
int dev; // File system's disk device
|
||||||
|
|||||||
@ -1,26 +1,20 @@
|
|||||||
#include "kernel/types.h"
|
|
||||||
#include "kernel/stat.h"
|
#include "kernel/stat.h"
|
||||||
|
#include "kernel/types.h"
|
||||||
#include "user/user.h"
|
#include "user/user.h"
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
static char digits[] = "0123456789ABCDEF";
|
static char digits[] = "0123456789ABCDEF";
|
||||||
|
|
||||||
static void
|
static void putc(int fd, char c) { write(fd, &c, 1); }
|
||||||
putc(int fd, char c)
|
|
||||||
{
|
|
||||||
write(fd, &c, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void printint(int fd, int xx, int base, int sgn) {
|
||||||
printint(int fd, int xx, int base, int sgn)
|
|
||||||
{
|
|
||||||
char buf[16];
|
char buf[16];
|
||||||
int i, neg;
|
int i, neg;
|
||||||
uint x;
|
uint x;
|
||||||
|
|
||||||
neg = 0;
|
neg = 0;
|
||||||
if(sgn && xx < 0){
|
if (sgn && xx < 0) {
|
||||||
neg = 1;
|
neg = 1;
|
||||||
x = -xx;
|
x = -xx;
|
||||||
} else {
|
} else {
|
||||||
@ -28,18 +22,17 @@ printint(int fd, int xx, int base, int sgn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
do{
|
do {
|
||||||
buf[i++] = digits[x % base];
|
buf[i++] = digits[x % base];
|
||||||
}while((x /= base) != 0);
|
} while ((x /= base) != 0);
|
||||||
if(neg)
|
if (neg)
|
||||||
buf[i++] = '-';
|
buf[i++] = '-';
|
||||||
|
|
||||||
while(--i >= 0)
|
while (--i >= 0)
|
||||||
putc(fd, buf[i]);
|
putc(fd, buf[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void printptr(int fd, uint64 x) {
|
||||||
printptr(int fd, uint64 x) {
|
|
||||||
int i;
|
int i;
|
||||||
putc(fd, '0');
|
putc(fd, '0');
|
||||||
putc(fd, 'x');
|
putc(fd, 'x');
|
||||||
@ -48,41 +41,39 @@ printptr(int fd, uint64 x) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Print to the given fd. Only understands %d, %x, %p, %s.
|
// Print to the given fd. Only understands %d, %x, %p, %s.
|
||||||
void
|
void vprintf(int fd, const char *fmt, va_list ap) {
|
||||||
vprintf(int fd, const char *fmt, va_list ap)
|
|
||||||
{
|
|
||||||
char *s;
|
char *s;
|
||||||
int c, i, state;
|
int c, i, state;
|
||||||
|
|
||||||
state = 0;
|
state = 0;
|
||||||
for(i = 0; fmt[i]; i++){
|
for (i = 0; fmt[i]; i++) {
|
||||||
c = fmt[i] & 0xff;
|
c = fmt[i] & 0xff;
|
||||||
if(state == 0){
|
if (state == 0) {
|
||||||
if(c == '%'){
|
if (c == '%') {
|
||||||
state = '%';
|
state = '%';
|
||||||
} else {
|
} else {
|
||||||
putc(fd, c);
|
putc(fd, c);
|
||||||
}
|
}
|
||||||
} else if(state == '%'){
|
} else if (state == '%') {
|
||||||
if(c == 'd'){
|
if (c == 'd') {
|
||||||
printint(fd, va_arg(ap, int), 10, 1);
|
printint(fd, va_arg(ap, int), 10, 1);
|
||||||
} else if(c == 'l') {
|
} else if (c == 'l') {
|
||||||
printint(fd, va_arg(ap, uint64), 10, 0);
|
printint(fd, va_arg(ap, uint64), 10, 0);
|
||||||
} else if(c == 'x') {
|
} else if (c == 'x') {
|
||||||
printint(fd, va_arg(ap, int), 16, 0);
|
printint(fd, va_arg(ap, int), 16, 0);
|
||||||
} else if(c == 'p') {
|
} else if (c == 'p') {
|
||||||
printptr(fd, va_arg(ap, uint64));
|
printptr(fd, va_arg(ap, uint64));
|
||||||
} else if(c == 's'){
|
} else if (c == 's') {
|
||||||
s = va_arg(ap, char*);
|
s = va_arg(ap, char *);
|
||||||
if(s == 0)
|
if (s == 0)
|
||||||
s = "(null)";
|
s = "(null)";
|
||||||
while(*s != 0){
|
while (*s != 0) {
|
||||||
putc(fd, *s);
|
putc(fd, *s);
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
} else if(c == 'c'){
|
} else if (c == 'c') {
|
||||||
putc(fd, va_arg(ap, uint));
|
putc(fd, va_arg(ap, uint));
|
||||||
} else if(c == '%'){
|
} else if (c == '%') {
|
||||||
putc(fd, c);
|
putc(fd, c);
|
||||||
} else {
|
} else {
|
||||||
// Unknown % sequence. Print it to draw attention.
|
// Unknown % sequence. Print it to draw attention.
|
||||||
@ -94,18 +85,14 @@ vprintf(int fd, const char *fmt, va_list ap)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void fprintf(int fd, const char *fmt, ...) {
|
||||||
fprintf(int fd, const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
vprintf(fd, fmt, ap);
|
vprintf(fd, fmt, ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void printf(const char *fmt, ...) {
|
||||||
printf(const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
|
|||||||
13
user/sleep.c
13
user/sleep.c
@ -0,0 +1,13 @@
|
|||||||
|
#include "kernel/types.h"
|
||||||
|
#include "user/user.h"
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
if (argc != 2) {
|
||||||
|
fprintf(2, "Usage: sleep <time>\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
int time = atoi(argv[1]);
|
||||||
|
// printf("time: %d\n", time);
|
||||||
|
sleep(time);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user