summaryrefslogtreecommitdiff
path: root/usr/src/cmd/avs/nsctl/nscadm.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/avs/nsctl/nscadm.c')
-rw-r--r--usr/src/cmd/avs/nsctl/nscadm.c275
1 files changed, 0 insertions, 275 deletions
diff --git a/usr/src/cmd/avs/nsctl/nscadm.c b/usr/src/cmd/avs/nsctl/nscadm.c
deleted file mode 100644
index 5096dd5b73..0000000000
--- a/usr/src/cmd/avs/nsctl/nscadm.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <strings.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <stdio.h>
-#include <locale.h>
-
-#include <nsctl.h>
-#define __NSC_GEN__
-#include <sys/nsctl/nsc_gen.h>
-#include <sys/nsctl/nsc_mem.h>
-
-
-/*
- * Private functions from libsd.
- */
-extern int nsc_nvclean(int);
-extern int nsc_gmem_data(char *);
-extern int nsc_gmem_sizes(int *);
-
-/*
- * Local functions.
- */
-static int _nsc_gmem(void);
-static void show_maps(char *, int);
-
-
-static void
-usage(void)
-{
- (void) fprintf(stderr, gettext("usage: nscadm [-h] command\n"));
- (void) fprintf(stderr, gettext("valid commands:\n"));
- (void) fprintf(stderr, gettext(" freeze <device>\n"));
- (void) fprintf(stderr, gettext(" unfreeze <device>\n"));
- (void) fprintf(stderr, gettext(" isfrozen <device>\n"));
-}
-
-static void
-is_chr_dev(char *dev, char *op)
-{
- struct stat sbuf;
- if (stat(dev, &sbuf) < 0) {
- (void) fprintf(stderr, gettext("nscadm: "));
- perror(op);
- exit(255);
- }
- if (!S_ISCHR(sbuf.st_mode)) {
- (void) fprintf(stderr, gettext("nscadm: %s: not a valid device "
- "<%s>\n"), op, dev);
- exit(255);
- }
-}
-
-int
-main(int argc, char *argv[])
-{
- extern int optind, opterr;
- int opt, rc;
-
- (void) setlocale(LC_ALL, "");
- (void) textdomain("nscadm");
-
- rc = 0;
- opterr = 0;
-
- while ((opt = getopt(argc, argv, "h")) != -1) {
- switch (opt) {
- case 'h':
- usage();
- exit(0);
- break;
- default:
- usage();
- exit(255);
- break;
- }
- }
-
- if (optind == argc) {
- usage();
- exit(255);
- }
-
- if (strcoll(argv[optind], gettext("freeze")) == 0 ||
- strcmp(argv[optind], "freeze") == 0) {
- if (argc - optind != 2) {
- usage();
- exit(255);
- }
-
- is_chr_dev(argv[optind+1], "freeze");
- rc = nsc_isfrozen(argv[optind+1]);
- if (rc < 0) {
- perror(gettext("nscadm: freeze"));
- exit(255);
- } else if (rc != 0) {
- rc = nsc_freeze(argv[optind+1]);
- if (rc < 0) {
- perror(gettext("nscadm: freeze"));
- exit(255);
- }
- } else {
- (void) fprintf(stderr, gettext("nscadm: device <%s> is "
- "already frozen\n"), argv[optind+1]);
- exit(255);
- }
-
- (void) printf(gettext("nscadm: device <%s> frozen\n"),
- argv[optind+1]);
- } else if (strcoll(argv[optind], gettext("unfreeze")) == 0 ||
- strcmp(argv[optind], "unfreeze") == 0) {
- if (argc - optind != 2) {
- usage();
- exit(255);
- }
-
- is_chr_dev(argv[optind+1], "unfreeze");
- rc = nsc_isfrozen(argv[optind+1]);
- if (rc < 0) {
- perror(gettext("nscadm: unfreeze"));
- exit(255);
- } else if (rc == 0) {
- rc = nsc_unfreeze(argv[optind+1]);
- if (rc < 0) {
- perror(gettext("nscadm: unfreeze"));
- exit(255);
- }
- } else {
- (void) fprintf(stderr,
- gettext("nscadm: device <%s> is not "
- "frozen\n"), argv[optind+1]);
- exit(255);
- }
-
- (void) printf(gettext("nscadm: device <%s> unfrozen\n"),
- argv[optind+1]);
- } else if (strcoll(argv[optind], gettext("isfrozen")) == 0 ||
- strcmp(argv[optind], "isfrozen") == 0) {
- if (argc - optind != 2) {
- usage();
- exit(255);
- }
-
- is_chr_dev(argv[optind+1], "isfrozen");
- rc = nsc_isfrozen(argv[optind+1]);
- if (rc < 0) {
- perror(gettext("nscadm: isfrozen"));
- exit(255);
- }
-
- (void) printf(gettext("nscadm: device <%s> is %sfrozen\n"),
- argv[optind+1], rc ? gettext("not ") : "");
-#ifdef DEBUG
- } else if (strcoll(argv[optind], gettext("nvclean")) == 0 ||
- strcmp(argv[optind], "nvclean") == 0) {
- rc = nsc_nvclean(0);
- if (rc < 0) {
- perror(gettext("nscadm: nvclean"));
- exit(255);
- }
- } else if (strcoll(argv[optind], gettext("nvclean_force")) == 0 ||
- strcmp(argv[optind], "nvclean_force") == 0) {
- rc = nsc_nvclean(1);
- if (rc < 0) {
- perror(gettext("nscadm: nvclean_force"));
- exit(255);
- }
-#endif /* DEBUG */
- } else if (strcoll(argv[optind], gettext("gmem")) == 0 ||
- strcmp(argv[optind], "gmem") == 0) {
- rc = _nsc_gmem();
- if (rc < 0) {
- perror(gettext("nscadm: gmem"));
- exit(255);
- }
- } else {
- usage();
- exit(255);
- }
-
- return (rc);
-}
-
-
-static int
-_nsc_gmem(void)
-{
- char *addr;
- int size;
- int rc = 0;
-
- rc = nsc_gmem_sizes(&size);
-
- if (rc < 0)
- return (rc);
-
- (void) printf(gettext("size %d\n"), size);
-
- if ((addr = (char *)malloc(size * 2)) == NULL) {
- errno = ENOMEM;
- return (-1);
- }
-
- rc = nsc_gmem_data(addr);
-
- if (rc < 0) {
- free(addr);
- return (rc);
- }
-
- (void) printf(gettext("Global map entries:\n"));
- show_maps(addr, size);
-
- (void) printf(gettext("\nGlobal NVMEM map entries:\n"));
- show_maps(addr + size, size);
-
- free(addr);
- return (0);
-}
-
-
-static void
-show_maps(char *addr, int len)
-{
- /* LINTED alignment of cast ok */
- nsc_rmhdr_t *rhp = (nsc_rmhdr_t *)addr;
- nsc_rmmap_t *rmap;
- char tname[_NSC_MAXNAME + 1];
- int i;
-
- (void) printf(
- gettext("magic 0x%x ver %d size %d dirty (nvmem systems): %d\n"),
- rhp->magic, rhp->ver, rhp->size, rhp->rh_dirty);
-
- for (i = 0, rmap = rhp->map;
- /* LINTED alignment of cast ok */
- rmap < (nsc_rmmap_t *)(addr + len); ++i, ++rmap) {
- if (!rmap->name[0])
- continue;
- (void) strncpy(tname, rmap->name, _NSC_MAXNAME);
- (void) strcpy(&tname[strlen(tname)], " ");
- tname[_NSC_MAXNAME] = '\0';
- (void) printf(gettext(
- "%d:\tname %s\toffset 0x%x size 0x%x inuse 0x%x\n"),
- i, tname, rmap->offset, rmap->size, rmap->inuse);
- }
-}