Support for reading cmdline from userspace

上级 8d4cf586
......@@ -22,6 +22,7 @@ static struct {
{ "/dev/sampler", 3 },
{ "/dev/lockstat", 4 },
{ "/dev/stat", 5 },
{ "/dev/cmdline", 6},
};
static int
......
......@@ -86,3 +86,4 @@ extern struct devsw devsw[];
#define SAMPLER 3
#define DEVLOCKSTAT 4
#define DEVSTAT 5
#define DEVCMDLINE 6
......@@ -3,6 +3,7 @@ OBJS = \
bio.o \
bootdata.o \
cga.o \
cmdline.o \
condvar.o \
console.o \
cpprt.o \
......
#include "types.h"
#include "kernel.hh"
#include "mmu.h"
#include "amd64.h"
#include "spinlock.h"
#include "condvar.h"
#include "fs.h"
#include "file.hh"
extern char cmdline[];
static int
cmdlineread(struct inode *inode, char *dst, u32 off, u32 n)
{
u32 cc;
if (off >= strlen(cmdline))
return 0;
cc = MIN(n, strlen(cmdline)-off);
memcpy(dst, &cmdline[off], cc);
return cc;
}
void
initcmdline(void)
{
if (VERBOSE)
cprintf("cmdline: %s\n", cmdline);
devsw[DEVCMDLINE].write = nullptr;
devsw[DEVCMDLINE].read = cmdlineread;
}
......@@ -39,6 +39,7 @@ void initsperf(void);
void initidle(void);
void initcpprt(void);
void initfutex(void);
void initcmdline(void);
void idleloop(void);
static volatile int bstate;
......@@ -109,6 +110,7 @@ cmain(u64 mbmagic, u64 mbaddr)
initsperf();
inittrap();
initlapic();
initcmdline();
initkalloc(mbaddr);
initz();
initproc(); // process table
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论