?? cooking.c
字號(hào):
/* cast our data ptr to a structure ptr of SMBIOS type 3 */ type3 = (smbios_type_3 *)smbiosstruct; /* prepare header strings */ sprintf (line, "%-35s%s %d %s\n", TYPE, SEP1, smbiosstruct->type, TYPE3_NAME); strcpy(file, line); sprintf (line, "%-35s%s %d %s\n", LENGTH, SEP1, smbiosstruct->length, BYTES); strcat(file, line); sprintf (line, "%-35s%s %d\n\n", HANDLE, SEP1, smbiosstruct->handle); strcat(file, line); sprintf (line, "%-35s%s %s\n", TYPE3_MANUFACTURER, SEP1, GetString(smbiosstruct, (unsigned int)(type3->manufacturer))); strcat(file, line); sprintf (line, "%-35s%s %s\n", TYPE3_VERSION, SEP1, GetString(smbiosstruct, (unsigned int)(type3->version))); strcat(file, line); sprintf (line, "%-35s%s %s\n", TYPE3_SERIAL_NUMBER, SEP1, GetString(smbiosstruct, (unsigned int)(type3->serialnumber))); strcat(file, line); sprintf (line, "%-35s%s %s\n", TYPE3_ASSET_TAG, SEP1, GetString(smbiosstruct, (unsigned int)(type3->asset_tag))); strcat(file, line); if(type3->type &0x80) sprintf (line, "%-35s%s %s\n", TYPE3_CHASSIS_LOCK, SEP1, TYPE3_CL_PRESENT); else sprintf (line, "%-35s%s %s\n", TYPE3_CHASSIS_LOCK, SEP1, TYPE3_CL_NOT_PRESENT); strcat(file, line); switch(type3->type & 0x7F) { case 1: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_OTHER); break; case 2: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_UNKNOWN); break; case 3: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_DESKTOP); break; case 4: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_LOW_PROFILE); break; case 5: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_PIZZA_BOX); break; case 6: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_MINI_TOWER); break; case 7: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_TOWER); break; case 8: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_PORTABLE); break; case 9: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_LAPTOP); break; case 10: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_NOTEBOOK); break; case 11: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_HANDHELD); break; case 12: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_DOCKING_STATION); break; case 13: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_ALL_IN_ONE); break; case 14: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_SUB_NOTEBOOK); break; case 15: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_SPACE_SAVING); break; case 16: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_LUNCH_BOX); break; case 17: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_MAIN_SERVER_CHASSIS); break; case 18: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_EXPANSION_CHASSIS); break; case 19: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_SUB_CHASSIS); break; case 20: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_BUS_EXP_CHASSIS); break; case 21: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_PERIPHERAL_CHASSIS); break; case 22: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_RAID_CHASSIS); break; case 23: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_RACK_MOUNT_CHASSIS); break; case 24: sprintf (line, "%-35s%s %s\n", TYPE3_TYPE, SEP1, TYPE3_TYPE_SEALED_CASE_PC); break; default: sprintf (line, "%-35s%s %d\n", TYPE3_TYPE, SEP1, type3->type & 0x7F); } strcat(file, line); /* SMBIOS 2.1 and higher */ if(smbiosstruct->length > 0x09) { switch(type3->bootup_state) { case 1: sprintf (line, "%-35s%s %s\n", TYPE3_BOOT_STATE, SEP1, TYPE3_STATE_OTHER); break; case 2: sprintf (line, "%-35s%s %s\n", TYPE3_BOOT_STATE, SEP1, TYPE3_STATE_UNKNOWN); break; case 3: sprintf (line, "%-35s%s %s\n", TYPE3_BOOT_STATE, SEP1, TYPE3_STATE_SAFE); break; case 4: sprintf (line, "%-35s%s %s\n", TYPE3_BOOT_STATE, SEP1, TYPE3_STATE_WARNING); break; case 5: sprintf (line, "%-35s%s %s\n", TYPE3_BOOT_STATE, SEP1, TYPE3_STATE_CRITICAL); break; case 6: sprintf (line, "%-35s%s %s\n", TYPE3_BOOT_STATE, SEP1, TYPE3_STATE_NON_RECOVERABLE); break; default: sprintf (line, "%-35s%s %d\n", TYPE3_BOOT_STATE, SEP1, type3->bootup_state); } strcat(file,line); switch(type3->pwr_supply_state) { case 1: sprintf (line, "%-35s%s %s\n", TYPE3_POWER_SUPPLY_STATE, SEP1, TYPE3_STATE_OTHER); break; case 2: sprintf (line, "%-35s%s %s\n", TYPE3_POWER_SUPPLY_STATE, SEP1, TYPE3_STATE_UNKNOWN); break; case 3: sprintf (line, "%-35s%s %s\n", TYPE3_POWER_SUPPLY_STATE, SEP1, TYPE3_STATE_SAFE); break; case 4: sprintf (line, "%-35s%s %s\n", TYPE3_POWER_SUPPLY_STATE, SEP1, TYPE3_STATE_WARNING); break; case 5: sprintf (line, "%-35s%s %s\n", TYPE3_POWER_SUPPLY_STATE, SEP1, TYPE3_STATE_CRITICAL); break; case 6: sprintf (line, "%-35s%s %s\n", TYPE3_POWER_SUPPLY_STATE, SEP1, TYPE3_STATE_NON_RECOVERABLE); break; default: sprintf (line, "%-35s%s %d\n", TYPE3_POWER_SUPPLY_STATE, SEP1, type3->bootup_state); } strcat(file,line); switch(type3->thermal_state) { case 1: sprintf (line, "%-35s%s %s\n", TYPE3_THERMAL_STATE, SEP1, TYPE3_STATE_OTHER); break; case 2: sprintf (line, "%-35s%s %s\n", TYPE3_THERMAL_STATE, SEP1, TYPE3_STATE_UNKNOWN); break; case 3: sprintf (line, "%-35s%s %s\n", TYPE3_THERMAL_STATE, SEP1, TYPE3_STATE_SAFE); break; case 4: sprintf (line, "%-35s%s %s\n", TYPE3_THERMAL_STATE, SEP1, TYPE3_STATE_WARNING); break; case 5: sprintf (line, "%-35s%s %s\n", TYPE3_THERMAL_STATE, SEP1, TYPE3_STATE_CRITICAL); break; case 6: sprintf (line, "%-35s%s %s\n", TYPE3_THERMAL_STATE, SEP1, TYPE3_STATE_NON_RECOVERABLE); break; default: sprintf (line, "%-35s%s %d\n", TYPE3_THERMAL_STATE, SEP1, type3->thermal_state); } strcat(file,line); switch(type3->security_state) { case 1: sprintf (line, "%-35s%s %s\n", TYPE3_SECURITY_STATE, SEP1, TYPE3_SEC_OTHER); break; case 2: sprintf (line, "%-35s%s %s\n", TYPE3_SECURITY_STATE, SEP1, TYPE3_SEC_UNKNOWN); break; case 3: sprintf (line, "%-35s%s %s\n", TYPE3_SECURITY_STATE, SEP1, TYPE3_SEC_NONE); break; case 4: sprintf (line, "%-35s%s %s\n", TYPE3_SECURITY_STATE, SEP1, TYPE3_SEC_EXT_LOCKED_OUT); break; case 5: sprintf (line, "%-35s%s %s\n", TYPE3_SECURITY_STATE, SEP1, TYPE3_SEC_EXT_ENABLED); break; default: sprintf (line, "%-35s%s %d\n", TYPE3_SECURITY_STATE, SEP1, type3->security_state); } strcat(file,line); } /* SMBIOS 2.3 and higher */ if(smbiosstruct->length > 0x0D) { sprintf(line, "%-35s%s %.8X h\n", TYPE3_OEM_DEFINED, SEP1, type3->oem_defined); strcat(file, line); } /* now line contains a string with fully interpreted type 3 data */ *plength = strlen(file); /* allocate memory */ scratch = kmalloc (*plength+1, GFP_BUFFER); if (scratch == NULL) { *plength = 0; return NULL; } /* copy the interpreted data */ memcpy (scratch, file, *plength); /* return a string with all the interpreted data for the given raw structure. */ /* the caller is responsible to free the memory. */ return scratch;}/** \fn unsigned char * bios_cook_type_4 (smbios_struct *smbiosstruct, unsigned int * plength) * \brief writes interpreted SMBIOS Type 4 data to a /proc file * \param smbiosstruct pointer to SMBIOS Type 4 raw structure * \param plength amount of memory allocated by this function * \return pointer to string that holds the interpreted data * * this function gets a raw SMBIOS Type 4 (Processor) structure. it * interpretes the raw data and builds a string with the interpreted * data. this is the return value of this structure. the caller is * responsible to free the allocated memory. * * \author Joachim Braeuer * \date March 2001 */unsigned char *bios_cook_type_4 (smbios_struct * smbiosstruct, unsigned int *plength){ smbios_type_4 *type4; unsigned char * scratch; /* contains the full block of interpreted data */ /* on some systems the system crashed if the stack (local variables) */ /* is bigger than one pages (4k). since linux needs some space in this */ /* page the variables should never exceed 3kB. */ unsigned char file[2800]; /* contains one line of the above file */ unsigned char line[128]; int i; unsigned char help[16]; unsigned char help2[16]; /* cast our data ptr to a structure ptr of SMBIOS type 4 */ type4 = (smbios_type_4 *)smbiosstruct; /* prepare header strings */ sprintf (line, "%-35s%s %d %s\n", TYPE, SEP1, smbiosstruct->type, TYPE4_NAME); strcpy(file, line); sprintf (line, "%-35s%s %d %s\n", LENGTH, SEP1, smbiosstruct->length, BYTES); strcat(file, line); sprintf (line, "%-35s%s %d\n\n", HANDLE, SEP1, smbiosstruct->handle); strcat(file, line); sprintf (line, "%-35s%s %s\n", TYPE4_SOCKET_DESIGNATION, SEP1, GetString(smbiosstruct, (unsigned int)(type4->socket_designation))); strcat(file, line); switch(type4->type) { case 1: sprintf (line, "%-35s%s %s\n", TYPE4_TYPE, SEP1, TYPE4_TYPE_OTHER); break; case 2: sprintf (line, "%-35s%s %s\n", TYPE4_TYPE, SEP1, TYPE4_TYPE_UNKNOWN); break; case 3: sprintf (line, "%-35s%s %s\n", TYPE4_TYPE, SEP1, TYPE4_TYPE_CENTRAL); break; case 4: sprintf (line, "%-35s%s %s\n", TYPE4_TYPE, SEP1, TYPE4_TYPE_MATH); break; case 5: sprintf (line, "%-35s%s %s\n", TYPE4_TYPE, SEP1, TYPE4_TYPE_DSP); break; case 6: sprintf (line, "%-35s%s %s\n", TYPE4_TYPE, SEP1, TYPE4_TYPE_VIDEO); break; default: sprintf (line, "%-35s%s %d\n", TYPE4_TYPE, SEP1, type4->type); } strcat(file, line); switch(type4->family) { case 1: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_OHTER); break; case 2: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_UNKNOWN); break; case 3: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_8086); break; case 4: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_80286); break; case 5: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_I386); break; case 6: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_I486); break; case 7: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_8087); break; case 8: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_80287); break; case 9: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_80387); break; case 10: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_80487); break; case 11: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_PENTIUM); break; case 12: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_PENTIUM_PRO); break; case 13: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_PENTIUM_II); break; case 14: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_PENTIUM_MMX); break; case 15: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_CELERON); break; case 16: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_PENTIUM_II_XEON); break; case 17: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_PENTIUM_III); break; case 18: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_M1); break; case 19: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_M2); break; case 20: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_M1_RES); break; case 21: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_M1_RES); break; case 22: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_M1_RES); break; case 23: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_M1_RES); break; case 24: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_DURON); break; case 25: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_K5); break; case 26: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_K6); break; case 27: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_K62); break; case 28: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_K63); break; case 29: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ATHLON); break; case 30: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_29000); break; case 31: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_K62P); break; case 32: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC); break; case 33: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_601); break; case 34: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_603); break; case 35: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_603P); break; case 36: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_604); break; case 37: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_620); break; case 38: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_X704); break; case 39: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_POWERPC_750); break; case 48: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA); break; case 49: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21064); break; case 50: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21066); break; case 51: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21164); break; case 52: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21164PC); break; case 53: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21164a); break; case 54: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21264); break; case 55: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_ALPHA_21364); break; case 64: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_MIPS); break; case 65: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_MIPS_R4000); break; case 66: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_MIPS_R4200); break; case 67: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_MIPS_R4400); break; case 68: sprintf (line, "%-35s%s %s\n", TYPE4_FAMILY, SEP1, TYPE4_FAMILY_MIPS_R4600); break;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -