This is kernel.c in view mode; [Download] [Up]
/* * Copyright (c) 1992 Michael A. Cooper. * This software may be freely distributed provided it is not sold for * profit and the author is credited appropriately. */ #ifndef lint static char *RCSid = "$Header: /src/common/usc/bin/sysinfo/RCS/kernel.c,v 1.10 1992/11/24 04:05:57 mcooper Exp mcooper $"; #endif /* * $Log: kernel.c,v $ * Revision 1.10 1992/11/24 04:05:57 mcooper * New/cleaner KVM/nlist interface. * * Revision 1.9 1992/07/07 23:28:38 mcooper * Put wrapper macro around nlist stuff to fix NeXT/Mach declaration * problem. Now works with NeXT 2.* cc compiler. * * Revision 1.8 1992/04/26 23:32:06 mcooper * Add Copyright notice * * Revision 1.7 1992/04/17 01:07:59 mcooper * More de-linting * * Revision 1.6 1992/04/16 02:25:39 mcooper * Bug fixes, de-linting, and other changes found with CodeCenter. * * Revision 1.5 1992/03/31 02:36:06 mcooper * Change "nl" to "VersionNL". * * Revision 1.4 1992/03/31 01:55:17 mcooper * Use new CheckNlist to check nlist success. * * Revision 1.3 1992/03/31 00:15:09 mcooper * Add error check for nlist.n_type. * * Revision 1.2 1992/03/22 00:55:41 mcooper * Use new GetNlName() to get n_name out of a struct nlist. * * Revision 1.1 1992/03/22 00:20:10 mcooper * Initial revision * */ /* * Kernel related functions. */ #include <stdio.h> #include "system.h" #include "defs.h" #if defined(HAVE_NLIST) #include <fcntl.h> #include <nlist.h> #if defined(HAVE_KVM) char VersionSYM[] = "_version"; /* * Get kernel version string by reading the * symbol "version" from the kernel. */ extern char *GetKernelVersionFromVersion() { struct nlist *nlptr; static char Buf[BUFSIZ]; register char *p; kvm_t *kd; if (kd = KVMopen()) { if ((nlptr = KVMnlist(kd, VersionSYM, (struct nlist *)NULL)) == NULL) return((char *) NULL); if (CheckNlist(nlptr)) return((char *) NULL); if (KVMread(kd, nlptr->n_value, (char *) Buf, sizeof(Buf))) { if (Debug) Error("Read of \"%s\" from kernel failed.", VersionSYM); Buf[0] = C_NULL; } } if (kd) KVMclose(kd); #if defined(KERNSTR_END) /* * Truncate extraneous info */ if (Buf[0]) if ((p = index(Buf, KERNSTR_END)) != NULL) *p = C_NULL; #endif /* KERNSTR_END */ return( (Buf[0]) ? Buf : (char *) NULL); } #endif /* HAVE_KVM */ #endif /* HAVE_NLIST */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.