1*9ef1f84bSDavid du Colombier #include <u.h>
2*9ef1f84bSDavid du Colombier #include <libc.h>
3*9ef1f84bSDavid du Colombier #include <../boot/boot.h>
4*9ef1f84bSDavid du Colombier
5*9ef1f84bSDavid du Colombier char *fparts[] =
6*9ef1f84bSDavid du Colombier {
7*9ef1f84bSDavid du Colombier "add bootldr 0x0000000 0x0040000",
8*9ef1f84bSDavid du Colombier "add params 0x0040000 0x0080000",
9*9ef1f84bSDavid du Colombier "add kernel 0x0080000 0x0140000",
10*9ef1f84bSDavid du Colombier "add user 0x0140000 0x0200000",
11*9ef1f84bSDavid du Colombier "add ramdisk 0x0200000 0x0600000",
12*9ef1f84bSDavid du Colombier };
13*9ef1f84bSDavid du Colombier
14*9ef1f84bSDavid du Colombier void
configpaq(Method *)15*9ef1f84bSDavid du Colombier configpaq(Method*)
16*9ef1f84bSDavid du Colombier {
17*9ef1f84bSDavid du Colombier int fd;
18*9ef1f84bSDavid du Colombier int i;
19*9ef1f84bSDavid du Colombier
20*9ef1f84bSDavid du Colombier if(bind("#F", "/dev", MAFTER) < 0)
21*9ef1f84bSDavid du Colombier fatal("bind #c");
22*9ef1f84bSDavid du Colombier if(bind("#p", "/proc", MREPL) < 0)
23*9ef1f84bSDavid du Colombier fatal("bind #p");
24*9ef1f84bSDavid du Colombier fd = open("/dev/flash/flashctl", OWRITE);
25*9ef1f84bSDavid du Colombier if(fd < 0)
26*9ef1f84bSDavid du Colombier fatal("opening flashctl");
27*9ef1f84bSDavid du Colombier for(i = 0; i < nelem(fparts); i++)
28*9ef1f84bSDavid du Colombier if(fprint(fd, fparts[i]) < 0)
29*9ef1f84bSDavid du Colombier fatal(fparts[i]);
30*9ef1f84bSDavid du Colombier close(fd);
31*9ef1f84bSDavid du Colombier }
32*9ef1f84bSDavid du Colombier
33*9ef1f84bSDavid du Colombier int
connectpaq(void)34*9ef1f84bSDavid du Colombier connectpaq(void)
35*9ef1f84bSDavid du Colombier {
36*9ef1f84bSDavid du Colombier int p[2];
37*9ef1f84bSDavid du Colombier char **arg, **argp;
38*9ef1f84bSDavid du Colombier
39*9ef1f84bSDavid du Colombier print("paq...");
40*9ef1f84bSDavid du Colombier if(pipe(p)<0)
41*9ef1f84bSDavid du Colombier fatal("pipe");
42*9ef1f84bSDavid du Colombier switch(fork()){
43*9ef1f84bSDavid du Colombier case -1:
44*9ef1f84bSDavid du Colombier fatal("fork");
45*9ef1f84bSDavid du Colombier case 0:
46*9ef1f84bSDavid du Colombier arg = malloc(10*sizeof(char*));
47*9ef1f84bSDavid du Colombier argp = arg;
48*9ef1f84bSDavid du Colombier *argp++ = "paqfs";
49*9ef1f84bSDavid du Colombier *argp++ = "-v";
50*9ef1f84bSDavid du Colombier *argp++ = "-i";
51*9ef1f84bSDavid du Colombier *argp++ = "/dev/flash/ramdisk";
52*9ef1f84bSDavid du Colombier *argp = 0;
53*9ef1f84bSDavid du Colombier
54*9ef1f84bSDavid du Colombier dup(p[0], 0);
55*9ef1f84bSDavid du Colombier dup(p[1], 1);
56*9ef1f84bSDavid du Colombier close(p[0]);
57*9ef1f84bSDavid du Colombier close(p[1]);
58*9ef1f84bSDavid du Colombier exec("/boot/paqfs", arg);
59*9ef1f84bSDavid du Colombier fatal("can't exec paqfs");
60*9ef1f84bSDavid du Colombier default:
61*9ef1f84bSDavid du Colombier break;
62*9ef1f84bSDavid du Colombier }
63*9ef1f84bSDavid du Colombier waitpid();
64*9ef1f84bSDavid du Colombier
65*9ef1f84bSDavid du Colombier close(p[1]);
66*9ef1f84bSDavid du Colombier return p[0];
67*9ef1f84bSDavid du Colombier }
68