File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / pciutils / lib / params.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Fri Feb 17 15:18:43 2012 UTC (13 years, 1 month ago) by misho
Branches: pciutils, MAIN
CVS tags: v3_1_9, HEAD
pciutils

    1: /*
    2:  *	The PCI Library -- Parameters
    3:  *
    4:  *	Copyright (c) 2008 Martin Mares <mj@ucw.cz>
    5:  *
    6:  *	Can be freely distributed and used under the terms of the GNU GPL.
    7:  */
    8: 
    9: #include <stdio.h>
   10: #include <stdlib.h>
   11: #include <string.h>
   12: 
   13: #include "internal.h"
   14: 
   15: char *
   16: pci_get_param(struct pci_access *acc, char *param)
   17: {
   18:   struct pci_param *p;
   19: 
   20:   for (p=acc->params; p; p=p->next)
   21:     if (!strcmp(p->param, param))
   22:       return p->value;
   23:   return NULL;
   24: }
   25: 
   26: void
   27: pci_define_param(struct pci_access *acc, char *param, char *value, char *help)
   28: {
   29:   struct pci_param *p = pci_malloc(acc, sizeof(*p));
   30: 
   31:   p->next = acc->params;
   32:   acc->params = p;
   33:   p->param = param;
   34:   p->value = value;
   35:   p->value_malloced = 0;
   36:   p->help = help;
   37: }
   38: 
   39: int
   40: pci_set_param_internal(struct pci_access *acc, char *param, char *value, int copy)
   41: {
   42:   struct pci_param *p;
   43: 
   44:   for (p=acc->params; p; p=p->next)
   45:     if (!strcmp(p->param, param))
   46:       {
   47: 	if (p->value_malloced)
   48: 	  pci_mfree(p->value);
   49: 	p->value_malloced = copy;
   50: 	if (copy)
   51: 	  p->value = pci_strdup(acc, value);
   52: 	else
   53: 	  p->value = value;
   54: 	return 0;
   55:       }
   56:   return -1;
   57: }
   58: 
   59: int
   60: pci_set_param(struct pci_access *acc, char *param, char *value)
   61: {
   62:   return pci_set_param_internal(acc, param, value, 1);
   63: }
   64: 
   65: void
   66: pci_free_params(struct pci_access *acc)
   67: {
   68:   struct pci_param *p;
   69: 
   70:   while (p = acc->params)
   71:     {
   72:       acc->params = p->next;
   73:       if (p->value_malloced)
   74: 	pci_mfree(p->value);
   75:       pci_mfree(p);
   76:     }
   77: }
   78: 
   79: struct pci_param *
   80: pci_walk_params(struct pci_access *acc, struct pci_param *prev)
   81: {
   82:   /* So far, the params form a simple linked list, but this can change in the future */
   83:   if (!prev)
   84:     return acc->params;
   85:   else
   86:     return prev->next;
   87: }
   88: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>