⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setserial.c

📁 au1200 linux2.6.11 硬件解码mae驱动和maiplayer播放器源码
💻 C
字号:
/* <LIC_AMD_STD> * Copyright (C) 2003-2005 Advanced Micro Devices, Inc.  All Rights Reserved. *  * Unless otherwise designated in writing, this software and any related  * documentation are the confidential proprietary information of AMD.  * THESE MATERIALS ARE PROVIDED "AS IS" WITHOUT ANY * UNLESS OTHERWISE NOTED IN WRITING, EXPRESS OR IMPLIED WARRANTY OF ANY  * KIND, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,  * NONINFRINGEMENT, TITLE, FITNESS FOR ANY PARTICULAR PURPOSE AND IN NO  * EVENT SHALL AMD OR ITS LICENSORS BE LIABLE FOR ANY DAMAGES WHATSOEVER.  *  * AMD does not assume any responsibility for any errors which may appear  * in the Materials nor any responsibility to support or update the * Materials.  AMD retains the right to modify the Materials at any time,  * without notice, and is not obligated to provide such modified  * Materials to you. AMD is not obligated to furnish, support, or make * any further information available to you. * </LIC_AMD_STD>  *//* <CTL_AMD_STD> * </CTL_AMD_STD>  *//* <DOC_AMD_STD> * </DOC_AMD_STD>  */#define  NEED_FILES#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <fcntl.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include "base64.h"#include "secure_serial.h"#include "secure_serial_priv.h"#include "sfiles.h"#include "oemkeys.h"#include "linux/nvram.h"#include <stdlib.h>int main(int argc, char *argv[]){  int                  nvramfd=-1;  long   			hostid;  char	 			serialStr[MAX_SERIAL_NUM_SIZE+1];  int					rc,c;  int         setSerialFlg=0;  int         oemFlg=0;  int         modelFlg=0;  int         divxFlg=0;  int         errflg=0;  char        modelId[MODEL_ID_SIZE+1];  char        manufStr[MANUF_SIZE+1];  short       divxId;    char        outStr[500];    extern char *optarg;  extern int optind, optopt;  while ((c = getopt(argc, argv, "rs:o:m:d:")) != -1)   {    switch(c)     {      case 'o':        strncpy(manufStr,optarg,MANUF_SIZE);        memset(manufStr,MANUF_SIZE+1,0);        oemFlg++;        break;              case 'm':        memset(modelId,MODEL_ID_SIZE+1,0);        strncpy(modelId,optarg,MODEL_ID_SIZE);        modelFlg++;        break;      case 'd':        divxId = atoi(optarg);        divxFlg++;        break;              case 'r':                nvramfd = open("/dev/nvram",O_RDWR);        if (nvramfd < 0)        {          perror("NVRAM Driver not found. Exiting\n");          fprintf(stderr,"\n");          return(-1);        }        rc = ioctl(nvramfd,NVRAM_RESET_ALL,NULL);        if (rc < 0)        {          printf("NVRAM reset failed\n");                  } else {          printf("NVRAM has been reset/cleared\n");        }        close(nvramfd);        return(0);                break;      case 's':        setSerialFlg++;        strncpy(serialStr,optarg,MAX_SERIAL_NUM_SIZE);        serialStr[MAX_SERIAL_NUM_SIZE]=0;  // make sure string is terminated        if (strlen(serialStr) < MIN_SERIAL_NUM_SIZE)        {          errflg++;          fprintf(stderr,"Serial Number must be >= %d characters and <= %d characters\n",                  MIN_SERIAL_NUM_SIZE,MAX_SERIAL_NUM_SIZE);        }                hostid = getMyHostid(serialStr);        sethostid(hostid);        break;              case '?':        fprintf(stderr,"%s: Unrecognized option: -%c\n", argv[0],optopt);        errflg++;    }  }  if (errflg)  {    fprintf(stderr,"Usage: setserial [-r] [-s serial Number] [-o OEM-Name] [-m OEM-Model ] [-d DivX Model ID]\n");    return(-1);  }    nvramfd = open("/dev/nvram",O_RDWR);  if (nvramfd < 0)  {    perror("NVRAM Driver not found. Exiting");    return(-1);  }     if (setSerialFlg)  {    printf("input serial: %s\n",serialStr);    rc = ioctl(nvramfd,NVRAM_SET_SERIAL,serialStr);    if (rc != 0)    {      perror("set serial");      fprintf(stderr,"\nSerial number change not be changed once set.\n");      fprintf(stderr,"NVRAM maybe reset to default with -r option\n");    }        rc = ioctl(nvramfd,NVRAM_GET_SERIAL,outStr);    printf("Serial Number is: %s\n",outStr);  }  if (oemFlg)  {    rc = ioctl(nvramfd,NVRAM_SET_MANUFACTURER,manufStr);    if (rc != 0)      perror("Setting  Manufacturer String failed");    else    {          rc = ioctl(nvramfd,NVRAM_GET_MANUFACTURER,outStr);          printf("Manufacturer is: %s\n",outStr);    }      }  if (modelFlg)  {    rc = ioctl(nvramfd,NVRAM_SET_MODEL_ID,modelId);    if (rc != 0)      perror("Setting  Model Id failed");  }    if (divxFlg)  {    // not tested    rc = ioctl(nvramfd,NVRAM_SET_DIVX_MODEL_ID,&divxId);    if (rc != 0)      perror("Setting  Model Id failed");  }  close(nvramfd);  return(0);  	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -