ftp.nice.ch/pub/next/unix/admin/sysinfo.1.1.0.s.tar.gz#/os-mach.c

This is os-mach.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/os-mach.c,v 1.4 1992/04/26 23:32:06 mcooper Exp $";
#endif

/*
 * $Log: os-mach.c,v $
 * Revision 1.4  1992/04/26  23:32:06  mcooper
 * Add Copyright notice
 *
 * Revision 1.3  1992/04/17  01:07:59  mcooper
 * More de-linting
 *
 * Revision 1.2  1992/03/22  01:05:09  mcooper
 * Major cleanup and re-org.
 *
 * Revision 1.1  1992/03/01  23:28:16  mcooper
 * Initial revision
 *
 */

/*
 * Mach specific functions
 */

#include <stdio.h>
#include "system.h"
#include "defs.h"

#if	defined(HAVE_HOST_INFO)
#include <sys/host_info.h>

/*
 * Use the host_info() call to obtain type of CPU.
 */
extern char *GetCpuTypeFromHostInfo()
{
    extern NAMETAB 		CpuTypeTab[];
    struct host_basic_info 	basic_info;
    unsigned int 		count = HOST_BASIC_INFO_COUNT;
    register int 		i;

    if (host_info(host_self(), HOST_BASIC_INFO, 
		  (host_info_t) &basic_info, &count) != KERN_SUCCESS) {
	return((char *)NULL);
    }

    for (i = 0; CpuTypeTab[i].name; ++i) {
	if (CpuTypeTab[i].value == basic_info.cpu_type)
	    return(CpuTypeTab[i].name);
    }

    return((char *) NULL);
}

/*
 * Use the host_info() call to obtain the model of CPU.
 */
extern char *GetModelFromHostInfo()
{
    extern NAMETAB 		ModelTabMach[];
    struct host_basic_info 	basic_info;
    unsigned int 		count = HOST_BASIC_INFO_COUNT;
    register int 		i;

    if (host_info(host_self(), HOST_BASIC_INFO, 
		  (host_info_t) &basic_info, &count) != KERN_SUCCESS) {
	return((char *)NULL);
    }

    for (i = 0; ModelTabMach[i].name; ++i) {
	if (ModelTabMach[i].value == basic_info.cpu_subtype)
	    return(ModelTabMach[i].name);
    }

    return((char *) NULL);
}

/*
 * Get our application architecture name.
 */
extern char *GetAppArchFromHostInfo()
{
    return(GetCpuTypeFromHostInfo());
}

/*
 * Get our kernel architecture name.
 */
extern char *GetKernArchFromHostInfo()
{
    return(GetCpuTypeFromHostInfo());
}

/*
 * Get amount of memory.
 */
extern char *GetMemoryFromHostInfo()
{
    struct host_basic_info 	BasicInfo;
    unsigned int 		count = HOST_BASIC_INFO_COUNT;
    static char			Buf[BUFSIZ];
    int				Amount = -1;

    if (host_info(host_self(), HOST_BASIC_INFO, 
		  (host_info_t) &BasicInfo, &count) == KERN_SUCCESS) {
	Amount = BasicInfo.memory_size / MBYTES;
	(void) sprintf(Buf, "%d MB", Amount);
	return(Buf);
    } else
	return((char *) NULL);
}

/*
 * Get kernel version string.
 */
extern char *GetKernelVersionFromHostInfo()
{
    static char 		Version[BUFSIZ];
    register char 	       *p;

    Version[0] = C_NULL;
    if (host_kernel_version(host_self(), Version) != KERN_SUCCESS) {
	if (Debug) Error("host_kernel_version() failed: %s.\n", SYSERR);
    }

#if	defined(KERNSTR_END)
    if (Version[0])
	if ((p = index(Version, KERNSTR_END)) != NULL)
	    *p = C_NULL;
#endif	/* KERNSTR_END */

    return((Version[0]) ? Version : (char *) NULL);
}

/*
 * Get OS version
 */
extern char *GetOSVersionFromHostInfo()
{
    static char			Buf[BUFSIZ];
    struct machine_info 	Info;

    if (xxx_host_info(host_self(), (machine_info_t) &Info) == KERN_SUCCESS) {
	(void) sprintf(Buf, "%d.%d", Info.major_version, Info.minor_version);
	return(Buf);
    }

    return((char *) NULL);
}

#endif	/* HAVE_HOST_INFO */

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.