Path: utzoo!mnetor!uunet!lll-winken!lll-tis!ames!hc!beta!cmcl2!brl-adm!adm!chris@mimsy.umd.edu From: chris@mimsy.umd.edu (Chris Torek) Newsgroups: comp.unix.wizards Subject: Re: Reading VAX SID register on ultrix or 4.3bsd Message-ID: <13092@brl-adm.ARPA> Date: 23 Apr 88 05:32:44 GMT Sender: news@brl-adm.ARPA Lines: 45 Make nlist a syscall? Not quite...! The following might, however, be interesting: have a privileged program dig out those `interesting numbers'---all the post-boot static ones, anyway---and put them in a file, storing them at offsets derived from the offset in /vmunix (or local equivalent). Look Ma (Ma Bell? :-) ), a getdtablesize() C library function!: int read_saved_kernel_int(name) char *name; { struct nlist nl[2]; int fd, rv; nl[0].n_name = name; nl[1].n_name = NULL; if (nlist("/vmunix", nl)) /* something is wrong */ return (-1); if ((fd = open("/etc/kdata", 0)) < 0) return (-1); (void) lseek(fd, (off_t)nl[0].n_value - (off_t)KERNBASE, L_SET); if (read(fd, (char *)&rv, sizeof(rv)) != sizeof(rv)) rv = -1; (void) close(fd); return (rv); } int getdtablesize() { return (_read_saved_kernel_int("_dtablesize")); } int getcputype() { return (_read_saved_kernel_int("_cpu")); } /* ceteraque :-) */ Now all you have to do is write /etc/savekdata.