Date: Fri, 26 Jan 2007 01:54:25 -0500 (EST) From: john@utzweb.net To: freebsd-acpi@freebsd.org Subject: SYSCTL_ADD_UINT - what am i doing wrong? Message-ID: <48652.69.93.78.27.1169794465.squirrel@69.93.78.27>
next in thread | raw e-mail | index | archive | help
Hello There! I am having some gnarly grief with SYSCTL_ADD_UINT; it doesnt present the data that i think that i have presented to it. What's strange about this is that i use SYSCTL_ADD_STRING and it works perfectly. Note that in the following for loop (in smbios_attach()), i use SYSCTL_ADD_UINT, SYSCTL_ADD_STRING and my good debugging friend printf() for(u8IdxEntry = 0; u8IdxEntry < psmbios_structure->u8CntEntry; u8IdxEntry++) { ssmbios_entry = pasmbios_structure_entry[u8IdxEntry]; s_pu8Addr = smbios_entry_find( s_peps, s_pu8Addr, psmbios_structure->u8Type, ssmbios_entry.u8Offset, ssmbios_entry.u8NumBytes); printf("Name: %s Addr: %p Val: %u\n", ssmbios_entry.acName, s_pu8Addr, *s_pu8Addr); if(String==ssmbios_entry.etVal) SYSCTL_ADD_STRING( &psc->sysctl_ctx, ploid, OID_AUTO, ssmbios_entry.acName, CTLFLAG_RD, s_pu8Addr, 0, ""); else SYSCTL_ADD_UINT( &psc->sysctl_ctx, ploid, OID_AUTO, ssmbios_entry.acName, CTLFLAG_RD, s_pu8Addr, 0, ""); } Here is the output of dmesg, note the 'Val: ' items, because these are the correct numbers that are supposed to be there: smbios0: <System Management BIOS> on motherboard smbios0: Version: 2.3 smbios0: Latitude C400, Dell Computer Corporation, A12, 5PYHW11 Name: Type Addr: 0xc00f786b Val: 1 Name: Length Addr: 0xc00f786c Val: 25 Name: Handle Addr: 0xc00f786d Val: 0 Name: Manufacturer Addr: 0xc00f7884 Val: 68 Name: ProductName Addr: 0xc00f789e Val: 76 Name: Version Addr: 0xc334c63b Val: 0 Name: SerialNumber Addr: 0xc00f78bf Val: 53 Name: UUID Addr: 0xc00f7873 Val: 68 Name: Wake-upType Addr: 0xc00f7883 Val: 6 Name: SKUNumber Addr: 0xc00f7a22 Val: 18 Name: Family Addr: 0xc00f7aad Val: 182 Now, let's review the output of sysctl: [spaz@minime /usr/home/spaz]$ sysctl hw.smbios hw.smbios.system.Type: 16783617 hw.smbios.system.Length: 16842777 hw.smbios.system.Handle: 33620224 hw.smbios.system.Manufacturer: Dell Computer Corporation hw.smbios.system.ProductName: Latitude C400 hw.smbios.system.Version: hw.smbios.system.SerialNumber: 5PYHW11 hw.smbios.system.UUID: 1280066884 hw.smbios.system.Wake-upType: 1818575878 hw.smbios.system.SKUNumber: USB hw.smbios.system.Family: ¶ The good news is that all of the *Strings* look great, but the int values are crap; Type should be 1, Length should be 25, etc. Can anybody offer any suggestions as to what i am doing wrong? tnx! johnu ps: if i get this sorted out, then the only thing i need to do is finish typing up the smbios structures, ie: static struct smbios_structure_entry asmbios_entry_SYST[SMBIOS_CNT_SYST] = { { "Type" , 0x00, 1, 1 }, { "Length" , 0x01, 1, Varies }, { "Handle" , 0x02, 2, Varies }, { "Manufacturer" , 0x04, 0, String }, { "ProductName" , 0x05, 0, String }, { "Version" , 0x06, 0, String }, { "SerialNumber" , 0x07, 0, String }, { "UUID" , 0x08,16, Varies }, { "Wake-upType" , 0x18, 1, Enum }, { "SKUNumber" , 0x19, 0, String }, { "Family" , 0x1a, 0, String } }; and smbios.ko will be completed
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?48652.69.93.78.27.1169794465.squirrel>