echo "0. No Ethernet card (no networking)"
echo "1. An Intel Pro/100 Ethernet card is installed"
echo "2. A Realtek 8139 Ethernet card is installed"
-echo "3. A different Ethernet card is installed (no networking)"
+echo "3. A Realtek 8029 Ethernet card is installed (emulated by Qemu)"
+echo "4. An NE2000, 3com 503 or WD based Ethernet card "
+echo " is installed (NE2000 is emulated by Bochs)"
+echo "5. A 3com 501 or 509 Ethernet card is installed "
+echo "6. A different Ethernet card is installed (no networking)"
echo ""
echo "You can always change your mind after the install."
echo ""
echo -n "Choice? "
read eth
driver=""
-inetparams=""
case "$eth" in
- 1) driver=FXP; inetparams="servers=inet;" ;;
- 2) driver=RTL8139; inetparams="servers=inet;" ;;
+ 1) driver=fxp; ;;
+ 2) driver=rtl8139; ;;
+ 3) driver=dp8390; driverargs="dp8390_args='DPETH0=pci'"; ;;
+ 4) driver=dp8390; driverargs="#dp8390_args='DPETH0=port:irq:memory'"; ;;
+ 5) driver=dpeth; ;;
esac
# Compute the amount of memory available to Minix.
# Make bootable.
installboot -d /dev/$root /usr/mdec/bootblock /boot/boot >/dev/null || exit
-edparams /dev/$root "rootdev=$root; ramimagedev=$root; $cache; $inetparams; main() { echo \"This is the MINIX 3 boot monitor.\"; echo \"MINIX will load in 5 seconds, or press ESC.\"; trap 5000 boot; menu; }; save" || exit
+edparams /dev/$root "rootdev=$root; ramimagedev=$root; $cache; main() { echo \"This is the MINIX 3 boot monitor.\"; echo \"MINIX will load in 5 seconds, or press ESC.\"; trap 5000 boot; menu; }; save" || exit
pfile="/usr/src/tools/fdbootparams"
echo "Remembering boot parameters in ${pfile}."
echo "rootdev=$root; ramimagedev=$root; $cache; save" >$pfile || exit
}
+#define CHILDFD 1
+#define PARENTFD 0
+
void do_child(int pty_fds[])
{
/* reads from pipe and prints out the data */
signal(SIGUSR1, pipehandler);
/* first, close the write part, since it is not needed */
- close(pty_fds[1]);
+ close(pty_fds[PARENTFD]);
while(1) {
FD_ZERO(&fds_read);
FD_ZERO(&fds_exception);
- FD_SET(pty_fds[0], &fds_read);
- FD_SET(pty_fds[0], &fds_exception);
+ FD_SET(pty_fds[CHILDFD], &fds_read);
+ FD_SET(pty_fds[CHILDFD], &fds_exception);
timeout.tv_sec = 5;
timeout.tv_usec = 0;
- retval = select(pty_fds[0]+1, &fds_read, NULL, &fds_exception, &timeout);
+ retval = select(pty_fds[CHILDFD]+1, &fds_read, NULL, &fds_exception, &timeout);
if (retval == -1) {
perror("select");
fprintf(stderr, "child: Error in select\n");
continue;
} else printf("child select: %d\n", retval);
- if (FD_ISSET(pty_fds[0], &fds_exception)) {
+ if (FD_ISSET(pty_fds[CHILDFD], &fds_exception)) {
printf("child: exception fd set. quitting.\n");
break;
}
- if (FD_ISSET(pty_fds[0], &fds_read)) {
+ if (FD_ISSET(pty_fds[CHILDFD], &fds_read)) {
printf("child: read fd set. reading.\n");
- if ((retval = read(pty_fds[0], data, sizeof(data))) < 0) {
+ if ((retval = read(pty_fds[CHILDFD], data, sizeof(data))) < 0) {
perror("read");
- fprintf(stderr, "child: couldn't read from pipe\n");
+ fprintf(stderr, "child: couldn't read from pty\n");
exit(-1);
}
if(retval == 0) {
- fprintf(stderr, "child: eof on pipe\n");
+ fprintf(stderr, "child: eof on pty\n");
break;
}
data[retval] = '\0';
- printf("pid %d eipe reads (%d): %s\n", getpid(), retval, data);
+ printf("pid %d pty reads (%d): %s\n", getpid(), retval, data);
} else printf("child: no fd set\n");
}
signal(SIGUSR1, pipehandler);
/* first, close the read part of pty, since it is not needed */
- close(pty_fds[0]);
+ close(pty_fds[CHILDFD]);
/* now enter a loop of read user input, and writing it to the pty */
while (1) {
FD_ZERO(&fds_write);
- FD_SET(pty_fds[1], &fds_write);
+ FD_SET(pty_fds[PARENTFD], &fds_write);
printf("pid %d Waiting for pty ready to write on %s...\n",
getpid(), name);
- retval = select(pty_fds[1]+1, NULL, &fds_write, NULL, NULL);
+ retval = select(pty_fds[PARENTFD]+1, NULL, &fds_write, NULL, NULL);
if (retval == -1) {
perror("select");
fprintf(stderr, "Parent: Error in select\n");
}
if (!strcmp(data, "exit"))
break;
- if (!FD_ISSET(pty_fds[1], &fds_write)) {
+ if (!FD_ISSET(pty_fds[PARENTFD], &fds_write)) {
fprintf(stderr, "parent: write fd not set?! retrying\n");
continue;
}
- retval = write(pty_fds[1], &data, 1024);
+ retval = write(pty_fds[PARENTFD], &data, 1024);
if (retval == -1) {
perror("write");
fprintf(stderr, "Error writing on pty\n");
}
/* got exit from user */
- close(pty_fds[1]); /* close pty, let child know we're done */
+ close(pty_fds[PARENTFD]); /* close pty, let child know we're done */
wait(&retval);
printf("Child exited with status: %d\n", retval);
exit(0);