19a747e4fSDavid du Colombier #include <u.h>
29a747e4fSDavid du Colombier #include <libc.h>
39a747e4fSDavid du Colombier #include <../boot/boot.h>
49a747e4fSDavid du Colombier
59a747e4fSDavid du Colombier char *fparts[] =
69a747e4fSDavid du Colombier {
79a747e4fSDavid du Colombier "add bootldr 0x0000000 0x0040000",
89a747e4fSDavid du Colombier "add params 0x0040000 0x0080000",
99a747e4fSDavid du Colombier "add kernel 0x0080000 0x0140000",
109a747e4fSDavid du Colombier "add user 0x0140000 0x0200000",
11*e288d156SDavid du Colombier "add ramdisk 0x0200000 0x0600000",
129a747e4fSDavid du Colombier };
139a747e4fSDavid du Colombier
149a747e4fSDavid du Colombier void
configpaq(Method *)159a747e4fSDavid du Colombier configpaq(Method*)
169a747e4fSDavid du Colombier {
179a747e4fSDavid du Colombier int fd;
189a747e4fSDavid du Colombier int i;
199a747e4fSDavid du Colombier
209a747e4fSDavid du Colombier if(bind("#F", "/dev", MAFTER) < 0)
219a747e4fSDavid du Colombier fatal("bind #c");
229a747e4fSDavid du Colombier if(bind("#p", "/proc", MREPL) < 0)
239a747e4fSDavid du Colombier fatal("bind #p");
249a747e4fSDavid du Colombier fd = open("/dev/flash/flashctl", OWRITE);
259a747e4fSDavid du Colombier if(fd < 0)
269a747e4fSDavid du Colombier fatal("opening flashctl");
279a747e4fSDavid du Colombier for(i = 0; i < nelem(fparts); i++)
289a747e4fSDavid du Colombier if(fprint(fd, fparts[i]) < 0)
299a747e4fSDavid du Colombier fatal(fparts[i]);
309a747e4fSDavid du Colombier close(fd);
319a747e4fSDavid du Colombier }
329a747e4fSDavid du Colombier
339a747e4fSDavid du Colombier int
connectpaq(void)349a747e4fSDavid du Colombier connectpaq(void)
359a747e4fSDavid du Colombier {
369a747e4fSDavid du Colombier int p[2];
379a747e4fSDavid du Colombier char **arg, **argp;
389a747e4fSDavid du Colombier
399a747e4fSDavid du Colombier print("paq...");
409a747e4fSDavid du Colombier if(pipe(p)<0)
419a747e4fSDavid du Colombier fatal("pipe");
429a747e4fSDavid du Colombier switch(fork()){
439a747e4fSDavid du Colombier case -1:
449a747e4fSDavid du Colombier fatal("fork");
459a747e4fSDavid du Colombier case 0:
469a747e4fSDavid du Colombier arg = malloc(10*sizeof(char*));
479a747e4fSDavid du Colombier argp = arg;
489a747e4fSDavid du Colombier *argp++ = "paqfs";
499a747e4fSDavid du Colombier *argp++ = "-v";
509a747e4fSDavid du Colombier *argp++ = "-i";
519a747e4fSDavid du Colombier *argp++ = "/dev/flash/ramdisk";
529a747e4fSDavid du Colombier *argp = 0;
539a747e4fSDavid du Colombier
549a747e4fSDavid du Colombier dup(p[0], 0);
559a747e4fSDavid du Colombier dup(p[1], 1);
569a747e4fSDavid du Colombier close(p[0]);
579a747e4fSDavid du Colombier close(p[1]);
586a9fc400SDavid du Colombier exec("/boot/paqfs", arg);
599a747e4fSDavid du Colombier fatal("can't exec paqfs");
609a747e4fSDavid du Colombier default:
619a747e4fSDavid du Colombier break;
629a747e4fSDavid du Colombier }
639a747e4fSDavid du Colombier waitpid();
649a747e4fSDavid du Colombier
659a747e4fSDavid du Colombier close(p[1]);
669a747e4fSDavid du Colombier return p[0];
679a747e4fSDavid du Colombier }
68