aboutsummaryrefslogtreecommitdiff
path: root/deps
diff options
context:
space:
mode:
Diffstat (limited to 'deps')
-rw-r--r--deps/sysobj_early/data/arm.ids133
-rw-r--r--deps/sysobj_early/data/sdcard.ids2
-rw-r--r--deps/sysobj_early/data/vendor.ids1096
-rw-r--r--deps/sysobj_early/include/appf.h40
-rw-r--r--deps/sysobj_early/include/auto_free.h19
-rw-r--r--deps/sysobj_early/include/nice_name.h32
-rw-r--r--deps/sysobj_early/include/util_sysobj.h53
-rw-r--r--deps/sysobj_early/src/appf.c63
-rw-r--r--deps/sysobj_early/src/auto_free.c61
-rw-r--r--deps/sysobj_early/src/nice_name.c157
-rw-r--r--deps/sysobj_early/src/util_sysobj.c303
11 files changed, 1937 insertions, 22 deletions
diff --git a/deps/sysobj_early/data/arm.ids b/deps/sysobj_early/data/arm.ids
new file mode 100644
index 00000000..8e256ec3
--- /dev/null
+++ b/deps/sysobj_early/data/arm.ids
@@ -0,0 +1,133 @@
+#
+# List of ARM CPU IDs
+# in a format similar to pci.ids/usb.ids.
+#
+# Version: 2018.12.22
+# Maintained by: Burt P. (pburt0@gmail.com)
+# https://github.com/bp0/armids
+#
+# Syntax:
+# implementer implementer_name
+# part part_name <-- single tab
+#
+# <implementer> is two hex digits, <part> is three hex digits, keep in order.
+# Comments start with '#'.
+#
+# This file can be distributed under the GNU General Public License
+# (version 2 or higher).
+#
+# Based on lscpu-arm.c by Riku Voipio <riku.voipio@iki.fi>
+#
+# The information here is gathered from
+# - ARM manuals
+# - Linux kernel: arch/armX/include/asm/cputype.h
+# - GCC sources: config/arch/arch-cores.def
+# - Ancient wisdom
+#
+
+41 ARM
+ 810 ARM810
+ 920 ARM920
+ 922 ARM922
+ 926 ARM926
+ 940 ARM940
+ 946 ARM946
+ 966 ARM966
+ a20 ARM1020
+ a22 ARM1022
+ a26 ARM1026
+ b02 ARM11 MPCore
+ b36 ARM1136
+ b56 ARM1156
+ b76 ARM1176
+ c05 Cortex-A5
+ c07 Cortex-A7
+ c08 Cortex-A8
+ c09 Cortex-A9
+ c0d Cortex-A17 # Originally A12
+ c0f Cortex-A15
+ c0e Cortex-A17
+ c14 Cortex-R4
+ c15 Cortex-R5
+ c17 Cortex-R7
+ c18 Cortex-R8
+ c20 Cortex-M0
+ c21 Cortex-M1
+ c23 Cortex-M3
+ c24 Cortex-M4
+ c27 Cortex-M7
+ c60 Cortex-M0+
+ d01 Cortex-A32
+ d03 Cortex-A53
+ d04 Cortex-A35
+ d05 Cortex-A55
+ d07 Cortex-A57
+ d08 Cortex-A72
+ d09 Cortex-A73
+ d0a Cortex-A75
+ d13 Cortex-R52
+ d20 Cortex-M23
+ d21 Cortex-M33
+42 Broadcom
+ 00f Brahma B15
+ 100 Brahma B53
+ 516 ThunderX2
+43 Cavium
+ 0a0 ThunderX
+ 0a1 ThunderX 88XX
+ 0a2 ThunderX 81XX
+ 0a3 ThunderX 83XX
+ 0af ThunderX2 99xx
+44 DEC
+ a10 SA110
+ a11 SA1100
+4e nVidia
+ 000 Denver
+ 003 Denver 2
+50 APM
+ 000 X-Gene
+51 Qualcomm
+ 00f Scorpion
+ 02d Scorpion
+ 04d Krait
+ 06f Krait
+ 201 Kryo
+ 205 Kryo
+ 211 Kryo
+ 800 Falkor V1/Kryo
+ 801 Kryo V2
+ c00 Falkor
+ c01 Saphira
+53 Samsung
+ 001 exynos-m1
+54 Texas Instruments
+56 Marvell
+ 131 Feroceon 88FR131
+ 581 PJ4/PJ4b
+ 584 PJ4B-MP
+66 Faraday
+ 526 FA526
+ 626 FA626
+69 Intel
+ 200 i80200
+ 210 PXA250A
+ 212 PXA210A
+ 242 i80321-400
+ 243 i80321-600
+ 290 PXA250B/PXA26x
+ 292 PXA210B
+ 2c2 i80321-400-B0
+ 2c3 i80321-600-B0
+ 2d0 PXA250C/PXA255/PXA26x
+ 2d2 PXA210C
+ 2e3 i80219
+ 411 PXA27x
+ 41c IPX425-533
+ 41d IPX425-400
+ 41f IPX425-266
+ 682 PXA32x
+ 683 PXA930/PXA935
+ 688 PXA30x
+ 689 PXA31x
+ b11 SA1110
+ c12 IPX1200
diff --git a/deps/sysobj_early/data/sdcard.ids b/deps/sysobj_early/data/sdcard.ids
index 8827f673..08dfc49b 100644
--- a/deps/sysobj_early/data/sdcard.ids
+++ b/deps/sysobj_early/data/sdcard.ids
@@ -35,7 +35,7 @@ MANFID 00009c Angelbird / Hoodman
OEMID 3432 Kingston # "42"
OEMID 4144 ADATA # "AD"
OEMID 4245 Lexar / Angelbird / Hoodman # "BE"
-OEMID 4a45 Transcend # "JE"
+OEMID 4a45 Transcend Information # "JE"
OEMID 4a54 Sony # "JT"
OEMID 4a60 Transcend Information # "J`"
OEMID 5041 Panasonic # "PA"
diff --git a/deps/sysobj_early/data/vendor.ids b/deps/sysobj_early/data/vendor.ids
new file mode 100644
index 00000000..8c7d8b6f
--- /dev/null
+++ b/deps/sysobj_early/data/vendor.ids
@@ -0,0 +1,1096 @@
+#
+# Vendor Name and URL
+#
+# Syntax:
+# name <name>
+# name_short <shorter name>
+# url <url>
+# url_support <url>
+# wikipedia [language:]<article title>[#section]
+# note <short note>
+# ansi_color n[;n][...]
+# [match_string|match_string_case|match_string_exact] <match>
+# ...
+# [match_string|match_string_case|match_string_exact] <match>
+# [match_string|match_string_case|match_string_exact] <match>
+#
+#
+# Except for the newline, trailing whitespace is included in the string.
+# Match strings should be unique.
+#
+
+name Lenovo Group
+ name_short Lenovo
+ url www.lenovo.com
+ url_support support.lenovo.com
+ wikipedia Lenovo
+ ansi_color 0;97;41
+ match_string lenovo
+ note EDID vendor: LEN
+ match_string_exact LEN
+
+name ASUSTeK Computer
+ name_short ASUS
+ url www.asus.com
+ wikipedia Asus
+ ansi_color 0;30;47
+ match_string ASUSTek
+ match_string ASUS
+
+# PCI Vendor 1022
+name Advanced Micro Devices
+ name_short AMD
+ url www.amd.com
+ wikipedia Advanced Micro Devices
+ ansi_color 0;97;41
+ match_string Advanced Micro Devices
+ match_string_case AMD
+
+# PCI Vendor 1002 (used for GPUs)
+name Advanced Micro Devices (formerly ATI)
+ name_short AMD/ATI
+ url www.amd.com
+ wikipedia ATI Technologies
+ ansi_color 0;97;41
+ match_string ATI Technologies
+ match_string Advanced Micro Devices, Inc. [AMD/ATI]
+ match_string_case AMD/ATI
+ match_string_case ATI
+
+name nVidia Corporation
+ name_short nVidia
+ url www.nvidia.com
+ wikipedia Nvidia
+ ansi_color 0;97;42
+ match_string nVidia
+
+name G.Skill International Enterprise
+ name_short G.Skill
+ url www.gskill.com
+ wikipedia G.Skill
+ ansi_color 0;31;107
+ match_string G.Skill
+ match_string G-Skill
+ match_string G Skill
+
+name XFX Pine Group
+ name_short XFX
+ url www.xfxforce.com
+ wikipedia XFX
+ ansi_color 0;30;42
+ match_string_case XFX
+
+name 3Com
+ url www.3com.com
+ wikipedia 3Com
+ ansi_color 0;97;40
+ match_string 3Com
+
+name Intel Corporation
+ name_short Intel
+ url www.intel.com
+ wikipedia Intel Corporation
+ ansi_color 0;97;44
+ match_string Intel
+
+name Cirrus Logic
+ url www.cirrus.com
+ match_string Cirrus Logic
+
+name VIA Technologies
+ name_short VIA
+ url www.via.com.tw
+ ansi_color 0;36;107
+ match_string_case VIA
+
+name NEC Corporation
+ name_short NEC
+ url www.nec.com
+ ansi_color 0;94;107
+ note EDID vendor: NEC
+ match_string_case NEC
+
+name Realtek Semiconductor
+ name_short Realtek
+ url www.realtek.com.tw
+ ansi_color 0;34;107
+ match_string Realtek
+
+name Toshiba Corporation
+# styled in all-caps
+ name_short TOSHIBA
+ url www.toshiba.com
+ ansi_color 0;91;47
+ match_string Toshiba
+ note EDID vendor: TSB
+ match_string_exact TSB
+
+name Vizio
+ name_short VIZIO
+ ansi_color 0;30;107
+ note EDID vendor: VIZ
+ match_string_exact VIZ
+
+name ViewSonic Corporation
+ name_short ViewSonic
+ url www.viewsonic.com
+ ansi_color 0;35;103
+ note EDID vendor: VSC
+ match_string_exact VSC
+
+name LITE-ON
+ url www.liteonit.com
+ ansi_color 0;97;104
+ match_string_case LITE-ON
+
+name Maxtor
+ url www.maxtor.com
+ match_string Maxtor
+
+name Samsung
+ url www.samsung.com
+ ansi_color 0;47;30
+ match_string Samsung
+ note EDID vendor: SAM
+ match_string_exact SAM
+
+name Pioneer
+ url www.pioneer-eur.com
+ match_string Pioneer
+ note EDID vendor: PIO
+ match_string_exact PIO
+
+name Plextor
+ url www.plextor.be
+ match_string Plextor
+
+name Western Digital
+ name_short WD
+ url www.wdc.com
+ ansi_color 0;37;40
+ match_string_case WDC
+
+name LG Electronics
+ name_short LG
+ url www.lge.com
+ ansi_color 0;97;41
+ match_string Lucky-Goldstar
+ match_string_case LG
+
+name LG Electronics (formerly Goldstar)
+ name_short LG (Goldstar)
+ url www.lge.com
+ ansi_color 0;97;41
+ match_string Goldstar
+
+name LG Display
+ name_short LG Display
+ url www.lgdisplay.com
+ ansi_color 0;97;41
+ match_string LG Display
+ match_string LG.Philips
+ note EDID vendor: LGD
+ match_string_exact LGD
+
+name Hitachi-LG Data Storage
+ name_short HLDS
+ url http://hlds.co.kr
+ match_string_case HL-DT-ST
+
+name Hitachi Global Storage Technologies
+ name_short HGST
+ url hgst.com
+ ansi_color 0;97;40
+ match_string_case HGST
+
+name Hitachi
+ name_short HITACHI
+ url www.hitachi.com
+ ansi_color 0;30;47
+ match_string Hitachi
+ note EDID vendor: HTC
+ match_string_exact HTC
+
+name Lexmark
+ url www.lexmark.com
+ match_string Lexmark
+
+name Creative Labs
+ url www.creative.com
+ match_string Creative Labs
+
+name NXP Semiconductors
+ name_short NXP
+ url www.nxp.com
+ match_string_case NXP
+
+name Synaptics (formerly Brooktree)
+ name_short Synaptics (Brooktree)
+ url www.synaptics.com
+ match_string Brooktree
+
+name Synaptics (formerly Conexant Systems)
+ name_short Synaptics (Conexant)
+ url www.synaptics.com
+ match_string Conexant
+
+name Synaptics
+ url www.synaptics.com
+ match_string Synaptics
+
+name TDK-Micronas
+ url www.micronas.com
+ match_string Micronas
+
+name Apacer Technology
+ name_short Apacer
+ match_string Apacer
+
+name Bright Micron Technology
+ name_short BMT
+ match_string Bright Micron
+
+name HT Micron
+ match_string HT Micron
+
+name Intellitech
+ match_string Intellitech
+
+name Harmony Semiconductor
+ name_short Harmony
+ match_string Harmony
+
+name Qualcomm (formerly Atheros)
+ name_short Qualcomm (Atheros)
+ url www.qualcomm.com
+ wikipedia Qualcomm Atheros
+ ansi_color 0;94;47
+ match_string Qualcomm Atheros
+ match_string Atheros
+
+name Panasonic Industry Company
+ name_short Panasonic
+ url www.panasonic.com
+ ansi_color 0;30;107
+ match_string MATSHITA
+ note EDID vendor: MEI
+ match_string_exact MEI
+
+name Silicon Image
+ url www.siliconimage.com
+ match_string Silicon Image
+ match_string Silicon Integrated Image
+
+name Broadcom Corporation
+ name_short Broadcom
+ url www.broadcom.com
+ ansi_color 0;30;41
+ match_string Broadcom
+
+name Apple Computer
+ name_short Apple
+ url www.apple.com
+ ansi_color 0;97;100
+ match_string Apple
+ note EDID vendor: APP
+ match_string_exact APP
+
+name International Business Machines Corporation
+ name_short IBM
+ url www.ibm.com
+ ansi_color 0;94;107
+ match_string_case IBM
+
+name Dell Computer
+ name_short Dell
+ url www.dell.com
+ ansi_color 0;97;44
+ match_string Dell
+# Dell PowerEdge/PowerVault controller SCSI vendor
+ match_string PE/PV
+ note EDID vendor: DEL
+ match_string_exact DEL
+
+name Logitech International
+ name_short logitech
+ ansi_color 0;30;107
+ url www.logitech.com
+ match_string Logitech
+
+name Fujitsu
+ name_short FUJITSU
+ url www.fujitsu.com
+ ansi_color 0;31;107
+ match_string FUJITSU
+
+name Sony
+ name_short SONY
+ url www.sony.com
+ ansi_color 0;30;107
+ match_string Sony
+# match_string_case CDU
+ note EDID vendor: SNY
+ match_string_exact SNY
+
+name SanDisk
+ url www.sandisk.com
+ ansi_color 0;31;40
+ match_string SanDisk
+
+name ExcelStor Technology
+ url www.excelstor.com
+ match_string ExcelStor
+
+name D-Link
+ url www.dlink.com.tw
+ ansi_color 0;97;44
+ match_string D-Link
+
+name Gigabyte Technology
+ name_short Gigabyte
+ url www.gigabyte.com.tw
+ ansi_color 0;94;47
+ match_string Giga-byte
+ match_string Gigabyte
+
+name Micro-Star International
+ name_short MSI
+ url www.msi.com
+ url_support www.msi.com/support
+ ansi_color 0;97;40
+ match_string Micro-Star Int'l Co.,Ltd.
+ match_string Micro Star
+ match_string_case MSI
+
+name ZOTAC International
+ name_short ZOTAC
+ url www.zotac.com
+ url_support www.zotac.com/support/
+ ansi_color 0;90;43
+ match_string ZOTAC
+
+name C-Media Electronics
+ name_short C-Media
+ url www.cmedia.com.tw
+ match_string C-Media
+
+name AVerMedia Technologies
+ name_short AVerMedia
+ url www.aver.com
+ match_string Avermedia
+
+name Koninklijke Philips
+ name_short PHILIPS
+ url www.philips.com
+ match_string Philips
+ ansi_color 0;30;107
+ match_string Philips
+ note EDID vendor: PHL
+ match_string_exact PHL
+
+name Sharp Corporation
+ name_short SHARP
+ ansi_color 0;31;107
+ match_string Sharp
+ note EDID vendor: SHP
+ match_string_exact SHP
+
+name Ralink Technology
+ name_short Ralink
+ url www.ralinktech.com
+ ansi_color 0;36;107
+ match_string RaLink
+
+name Siemens AG
+ name_short Siemens
+ url www.siemens.com
+ match_string Siemens
+
+name Hewlett-Packard
+ name_short HP
+ url www.hp.com
+ ansi_color 0;97;46
+ match_string Hewlett-Packard
+ match_string_case HP
+ note EDID vendor: HWP
+ match_string_exact HWP
+ note SCSI vendor: hp
+ match_string_exact hp
+
+name TEAC Corporation
+ name_short TEAC
+ url www.teac.com
+ ansi_color 0;34;107
+ match_string_case TEAC
+
+name Microsoft
+ url www.microsoft.com
+ ansi_color 0;97;40
+ match_string Microsoft
+
+name Memorex Products
+ name_short Memorex
+ url www.memorex.com
+ match_string Memorex
+
+name eMPIA Technology
+ url www.empiatech.com.tw
+ match_string_case eMPIA
+
+name Canon
+ url www.canon.com
+ ansi_color 0;31;107
+ match_string Canon
+
+name A4tech
+ url www.a4tech.com
+ wikipedia A4Tech
+ ansi_color 0;33;40
+ match_string A4Tech
+
+name Alcor Life Extension Foundation
+# Makes devices?
+ name_short Alcor
+ url www.alcor.org
+ match_string ALCOR
+
+name Vimicro
+ url www.vimicro.com
+ match_string Vimicro
+
+name Ours Technology
+ url www.oti.com.tw
+ match_string_case OTi
+
+name BenQ
+ url www.benq.com
+ ansi_color 0;35;107
+ match_string BENQ
+
+name Holtek Semiconductor
+ name_short Holtek
+ url www.holtek.com
+ ansi_color 0;34;107
+ match_string Holtek
+
+name Acer
+ name_short acer
+ url www.acer.com
+ ansi_color 0;32;107
+ match_string Acer
+ note EDID vendor: ACR
+ match_string_exact ACR
+
+name Quantum
+ url www.quantum.com
+ match_string QUANTUM
+
+name Kingston Technology
+ name_short Kingston
+ url www.kingston.com
+ ansi_color 0;31;40
+ match_string Kingston
+
+name Chicony
+ url www.chicony.com.tw
+ match_string Chicony
+
+name Phison Electronics Corporation
+ name_short Phison
+ url www.phison.com
+ wikipedia Phison
+ ansi_color 0;33;44
+ match_string Phison
+
+name Corsair Components
+ name_short Corsair
+ url www.corsair.com
+ wikipedia Corsair Components
+ ansi_color 0;30;43
+ match_string Corsair
+
+name Genius
+ url www.genius.ru
+ match_string Genius
+
+name KYE Systems
+ name_short KYE
+ url www.genius-kye.com
+ match_string_case KYE
+
+name STMicroelectronics
+ name_short ST
+ url www.st.com
+ ansi_color 0;97;104
+ match_string STMicroelectronics
+ match_string ST Micro
+
+name ST-Ericsson
+ wikipedia ST-Ericsson
+ ansi_color 0;97;43
+ match_string ST-Ericsson
+ match_string ST Ericsson
+ match_string STEricsson
+
+name Telefonaktiebolaget LM Ericsson
+ name_short Ericsson
+ url ericsson.com
+ wikipedia Ericsson
+ ansi_color 0;94;107
+ match_string Ericsson
+
+name Socket Mobile
+ url www.socketmobile.com
+ match_string Socket Communications
+ match_string Socket Mobile
+ match_string Socket
+
+name GCT Semiconductor
+ name_short GCT
+ url www.gctsemi.com
+ match_string GCT Semiconductor
+ match_string_case GCT
+
+name Murata Manufacturing
+ name_short Murata
+ url www.murata.com
+ wikipedia Murata Manufacturing
+ ansi_color 0;31;107
+ match_string Murata
+
+name Murata Manufacturing (formerly SyChip Electronic Technology)
+ name_short Murata (SyChip)
+ ansi_color 0;31;107
+ match_string SyChip
+
+name Spectec Computer
+ name_short Spectec
+ url spectec.com.tw
+ match_string Spectec
+
+name Siano Mobile Silicon
+ match_string Siano Mobile Silicon
+
+# NOT Globalsat Group
+name Globalsat Technology
+ match_string Globalsat Technology
+
+name C-guys
+ url www.c-guys.net
+ match_string C-guys
+
+name Ricoh
+ url www.ricoh.com
+ wikipedia Ricoh
+ ansi_color 0;91;107
+ match_string Ricoh
+
+name Brother Industries
+ name_short Brother
+ url www.brother.com
+ wikipedia Brother Industries
+ ansi_color 0;34;107
+ match_string Brother
+
+name AboCom Systems
+ url www.abocom.com.tw
+ match_string AboCom Systems
+ match_string AboCom
+
+name Micron Technology
+ name_short Micron
+ url www.micron.com
+ ansi_color 0;34;47
+ match_string Micron
+
+name Crucial (Micron)
+ name_short Crucial
+ url www.crucial.com
+ ansi_color 0;37;44
+ match_string Crucial
+
+name Toshiba Samsung Storage Technology
+ name_short TSST
+ url www.tsst.co.kr
+ wikipedia Toshiba Samsung Storage Technology
+ ansi_color 0;34;107
+ match_string TSSTcorp
+ match_string_case TSST
+
+name Seagate Technology
+ name_short SEAGATE
+ url www.seagate.com
+ ansi_color 0;92;100
+ match_string Seagate
+# match_string_case ST
+
+name Silicon Integrated Systems Corporation
+ name_short SIS
+ url www.sis.com
+ match_string Silicon Integrated Systems
+ match_string_case SIS
+
+name S3 Graphics
+ name_short VIA/S3
+ url www.s3graphics.com
+ url_support www.s3graphics.com/en/drivers
+ ansi_color 0;30;103
+ match_string S3 Graphics
+ match_string_case VIA/S3
+
+name Fuzhou Rockchip Electronics
+ name_short Rockchip
+ url www.rock-chips.com
+ ansi_color 0;34;43
+ match_string Rockchip
+
+name Qualcomm Incorporated
+ name_short Qualcomm
+ url www.qualcomm.com
+ ansi_color 0;94;47
+ match_string Qualcomm
+
+name Arm Holdings
+# styled lower-case "arm"
+ name_short arm
+ url arm.com
+ ansi_color 0;36;107
+ match_string ARM
+
+name Microchip Technology (formerly Standard Microsystems)
+ name_short SMC
+ ansi_color 0;37;40
+ match_string Standard Microsystems
+
+name Linux Foundation
+ name_short Linux
+ ansi_color 0;33;40
+ match_string Linux Foundation
+ match_string Linux
+
+name ASMedia Technology
+ name_short ASMedia
+ url www.asmedia.com.tw
+ ansi_color 0;30;46
+ match_string_case ASMedia
+
+name Sapphire Technology
+ name_short SAPPHIRE
+ url www.sapphiretech.com
+ ansi_color 0;30;107
+ match_string sapphire tech
+
+name Synopsys
+ url www.synopsys.com
+ ansi_color 0;35;107
+ match_string Synopsys
+
+name Raspberry Pi Foundation
+ name_short Raspberry Pi
+ url www.raspberrypi.org
+ ansi_color 0;97;42
+ match_string RaspberryPi
+ match_string Raspberry Pi
+
+name Embest Technology
+ name_short Embest
+ url www.embest-tech.com
+ ansi_color 0;96;44
+ match_string Embest
+
+# JEDEC mfgr [1][78]
+name Transcend Information
+ name_short Transcend
+ url transcend-info.com
+ ansi_color 0;31;47
+ match_string Transcend Information
+ # More likely this one is T. Information than T. Technology
+ match_string Transcend
+
+# JEDEC mfgr [7][105]
+name Transcend Technology
+ name_short Transcend
+ match_string Transcend Technology
+
+# JEDEC mfgr [0][64]
+name Infineon Technologies
+ name_short infineon
+ url www.infineon.com
+ wikipedia Infineon Technologies
+ ansi_color 0;34;107
+ match_string Infineon
+
+name Cypress Semiconductor
+ name_short Cypress
+ url cypress.com
+ wikipedia Cypress Semiconductor
+ ansi_color 0;36;107
+ match_string Cypress
+
+name Renesas Electronics
+ name_short Renesas
+ url www.renesas.com
+ wikipedia Renesas Electronics
+ ansi_color 0;97;44
+ match_string Renesas
+
+name ADATA Technology
+ name_short ADATA
+ ansi_color 0;34;47
+ match_string_case ADATA
+
+name Victor Company of Japan
+ name_short JVC
+ url www.victor.co.jp
+ ansi_color 0;91;107
+ match_string_case JVC
+
+name ASRock
+ url www.asrock.com
+ ansi_color 0;32;107
+ match_string ASRock
+
+name Biostar Microtech International
+ name_short BIOSTAR
+ url www.biostar.tw
+ ansi_color 0;31;40
+ match_string Biostar
+
+name EVGA
+ url www.evga.com
+ ansi_color 0;34;107
+ match_string EVGA
+
+name Elitegroup Computer Systems
+ name_short ECS
+ ansi_color 0;36;41
+ match_string_case ECS
+
+name JMicron Technology
+ name_short JMicron
+ url www.jmicron.com
+ wikipedia JMicron
+ ansi_color 0;34;107
+ match_string JMicron Technology
+ match_string JMicron USA Technology
+ match_string JMicron
+
+name Sabrent
+ url www.sabrent.com
+ wikipedia Sabrent
+ ansi_color 0;30;44
+ match_string Sabrent
+ match_string Arkview
+
+name Sanyo Electric
+ name_short SANYO
+ url www.sanyo.com
+ match_string SANYO
+
+name Cambridge Silicon Radio
+ name_short CSR
+ url www.csr.com
+ wikipedia Cambridge Silicon Radio
+ ansi_color 0;34;107
+ match_string Cambridge Silicon Radio
+
+name Suprema
+ url www.supremainc.com
+ ansi_color 0;31;107
+ match_string suprema
+
+name Patriot Memory
+ name_short Patriot
+ url www.patriotmemory.com
+ wikipedia Patriot Memory
+ ansi_color 0;97;44
+ match_string Patriot Memory
+
+name SK Hynix
+ name_short SK hynix
+ url www.skhynix.com
+ wikipedia SK Hynix
+ ansi_color 0;31;43
+ match_string Hynix
+ match_string Hyundai
+
+#
+# BIOS manufacturers
+#
+
+name American Megatrends
+ name_short AMI
+ url www.ami.com
+ ansi_color 0;31;47
+ match_string American Megatrends
+
+name Award Software International
+ name_short Award
+ url www.award-bios.com
+ ansi_color 0;93;44
+ match_string Award
+
+name Phoenix Technologies
+ name_short Phoenix
+ url www.phoenix.com
+ ansi_color 0;31;47
+ match_string Phoenix
+
+name Insyde Software
+ name_short Insyde
+ url www.insyde.com
+ ansi_color 0;30;42
+ match_string Insyde
+
+name Coreboot Project
+ name_short Coreboot
+ url www.coreboot.org
+ match_string coreboot
+
+#
+# Linux
+#
+
+name Debian
+ url www.debian.org
+ ansi_color 0;31;107
+ match_string debian
+
+name Raspbian
+ url www.raspberrypi.org/downloads/raspbian/
+ ansi_color 0;97;101
+ match_string raspbian
+
+name Canonical
+ url www.canonical.com
+ ansi_color 0;97;45
+ match_string canonical
+
+name Ubuntu
+ url www.ubuntu.com
+ url_support www.ubuntu.com/support/community-support
+ ansi_color 0;97;45
+ match_string ubuntu
+
+name Arch Linux
+ name_short Arch
+ url www.archlinux.org
+ ansi_color 0;36;107
+ match_string arch linux
+
+name Red Hat
+ url www.redhat.com
+ ansi_color 0;31;40
+ match_string Red Hat
+ match_string RedHat
+
+name Sun Microsystems
+ name_short Sun
+ wikipedia Sun Microsystems
+ match_string Sun Microsystems
+
+name Oracle Corporation
+ name_short Oracle
+ url www.oracle.com
+ ansi_color 0;97;41
+ match_string Oracle
+
+name Oracle Corporation (formerly InnoTek Systemberatung)
+ name_short Oracle (InnoTek)
+ url www.virtualbox.org/wiki/innotek
+ url_support www.virtualbox.org
+ ansi_color 0;97;41
+ match_string InnoTek
+ match_string VirtualBox
+ match_string_case VBOX
+
+name Slackware
+ url www.slackware.com
+ ansi_color 0;30;107
+ match_string Slackware
+
+name KDE
+ url www.kde.org
+ wikipedia KDE
+ ansi_color 0;97;104
+ match_string_case KDE
+
+name CDEmu
+ url cdemu.sourceforge.io
+ match_string CDEmu
+
+#
+# x86 vendor strings
+#
+
+name Advanced Micro Devices
+ name_short AMD
+ url www.amd.com
+ wikipedia Advanced Micro Devices
+ ansi_color 0;97;41
+ note x86 processor vendor ID
+ match_string AMDisbetter!
+ match_string AuthenticAMD
+
+name Intel Corporation
+ name_short Intel
+ url www.intel.com
+ url_support ark.intel.com
+ ansi_color 0;97;44
+ note x86 processor vendor ID
+ match_string GenuineIntel
+
+name Chengdu Haiguang Integrated Circuit Design
+ name_short Hygon
+ ansi_color 0;97;104
+ match_string Hygon
+ match_string Higon
+ note x86 processor vendor ID
+ match_string HygonGenuine
+
+name VIA Technologies
+ name_short VIA
+ url www.via.tw
+ ansi_color 0;36;107
+ note x86 processor vendor ID
+ match_string VIA VIA VIA
+
+name VIA (formerly Centaur Technology)
+ name_short VIA (Centaur)
+ url www.via.tw
+ ansi_color 0;36;107
+ note x86 processor vendor ID
+ match_string CentaurHauls
+
+name VIA (formerly Cyrix)
+ name_short VIA (Cyrix)
+ url www.via.tw
+ ansi_color 0;36;107
+ note x86 processor vendor ID
+ match_string CyrixInstead
+
+name Transmeta Corporation
+ name_short Transmeta
+ note x86 processor vendor ID
+ match_string TransmetaCPU
+ match_string GenuineTMx86
+
+name National Semiconductor
+ name_short NSC
+ note x86 processor vendor ID
+ match_string Geode by NSC
+
+name NexGen
+ note x86 processor vendor ID
+ match_string NexGenDriven
+
+name Rise Technology
+ name_short Rise
+ note x86 processor vendor ID
+ match_string RiseRiseRise
+
+name Silicon Integrated Systems
+ name_short SIS
+ note x86 processor vendor ID
+ match_string SiS SiS SiS
+
+name United Microelectronics Corporation
+ name_short UMC
+ note x86 processor vendor ID
+ match_string UMC UMC UMC
+
+name DMP Electronics
+ note x86 processor vendor ID
+ match_string Vortex86 SoC
+
+name Digital Equipment Corporation
+ name_short DEC
+ note Dead; various parts to Intel, Compaq, HP
+ match_string_case DEC
+ match_string Digital Equipment
+ match_string Digital
+
+name Marvell Technology Group
+ name_short Marvell
+ url www.marvell.com
+ wikipedia Marvell Technology Group
+ ansi_color 0;97;41
+ match_string Marvell
+
+name Marvell (formerly Cavium)
+ name_short Marvell (Cavium)
+ url cavium.com
+ wikipedia Cavium
+ ansi_color 0;97;41
+ match_string Cavium
+
+name Applied Micro Circuits
+ name_short APM
+ wikipedia Applied Micro Circuits Corporation
+ match_string Applied Micro Circuits
+ match_string AppliedMicro
+ match_string_case APM
+ match_string_case AMCC
+
+name Faraday Technology
+ name_short Faraday
+ url www.faraday-tech.com
+ wikipedia Faraday Technology
+ match_string Faraday Technology
+ match_string Faraday
+
+name Texas Instruments
+ name_short TI
+ url ti.com
+ wikipedia Texas Instruments
+ ansi_color 0;97;40
+ match_string Texas Instruments
+ match_string_case TI
+
+name Allwinner Technology
+ name_short AllWinner
+ url www.allwinnertech.com
+ wikipedia Allwinner Technology
+ ansi_color 0;97;44
+ match_string AllWinner
+
+name Amlogic
+ name_short AMLogic
+ url www.amlogic.com
+ wikipedia Amlogic
+ ansi_color 0;94;107
+ match_string Amlogic
+
+name MediaTek
+ url www.mediatek.com
+ wikipedia MediaTek
+ ansi_color 0;97;43
+ match_string MediaTek
+
+#
+# x86 VM vendor strings
+#
+
+name VMware
+ url www.vmware.com
+ wikipedia VMware
+ ansi_color 0;90;47
+ match_string VMware
+ note x86 VM vendor string
+ match_string VMwareVMware
+
+name KVM
+ url www.linux-kvm.org
+ match_string KVMKVMKVM
+
+name Microsoft Hyper-V
+ url www.microsoft.com
+ match_string Microsoft Hv
+
+name Parallels
+ url www.parallels.com
+ match_string lrpepyh vr
+
+name Xen HVM
+ url www.xenproject.org
+ match_string XenVMMXenVMM
diff --git a/deps/sysobj_early/include/appf.h b/deps/sysobj_early/include/appf.h
new file mode 100644
index 00000000..b99f9373
--- /dev/null
+++ b/deps/sysobj_early/include/appf.h
@@ -0,0 +1,40 @@
+/*
+ * sysobj - https://github.com/bp0/verbose-spork
+ * Copyright (C) 2018 Burt P. <pburt0@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef _APPF_H_
+#define _APPF_H_
+
+/* Appends a formatted element to a string, adding an optional
+ * separator string if the string is not empty.
+ * The string is created if str is null.
+ * ex: ret = appf(ret, "; ", "%s = %d", name, value); */
+char *appf(char *str, const char *sep, const char *fmt, ...)
+ __attribute__ ((format (printf, 3, 4)));
+
+/* Same as above except that str is untouched.
+ * ex: ret = appf(keeper, "; ", "%s = %d", name, value); */
+char *appfdup(const char *str, const char *sep, const char *fmt, ...)
+ __attribute__ ((format (printf, 3, 4)));
+
+/* for convenience */
+#define appfsp(str, fmt, ...) appf(str, " ", fmt, __VA_ARGS__)
+#define appfnl(str, fmt, ...) appf(str, "\n", fmt, __VA_ARGS__)
+
+#endif
diff --git a/deps/sysobj_early/include/auto_free.h b/deps/sysobj_early/include/auto_free.h
index e038783d..bddaa321 100644
--- a/deps/sysobj_early/include/auto_free.h
+++ b/deps/sysobj_early/include/auto_free.h
@@ -36,20 +36,29 @@
/* the minimum time between auto_free(p) and free(p) */
#define AF_DELAY_SECONDS 10
+#define AF_USE_SYSOBJ 0
+
#if (DEBUG_AUTO_FREE > 0)
-#define auto_free(p) auto_free_(p, __FILE__, __LINE__, __FUNCTION__)
+#define auto_free(p) auto_free_ex_(p, (GDestroyNotify)g_free, __FILE__, __LINE__, __FUNCTION__)
#define auto_free_ex(p, f) auto_free_ex_(p, f, __FILE__, __LINE__, __FUNCTION__)
+#define auto_free_on_exit(p) auto_free_on_exit_ex_(p, (GDestroyNotify)g_free, __FILE__, __LINE__, __FUNCTION__)
+#define auto_free_on_exit_ex(p, f) auto_free_on_exit_ex_(p, f, __FILE__, __LINE__, __FUNCTION__)
#else
-#define auto_free(p) auto_free_(p, NULL, 0, NULL)
+#define auto_free(p) auto_free_ex_(p, (GDestroyNotify)g_free, NULL, 0, NULL)
#define auto_free_ex(p, f) auto_free_ex_(p, f, NULL, 0, NULL)
+#define auto_free_on_exit(p) auto_free_on_exit_ex_(p, (GDestroyNotify)g_free, NULL, 0, NULL)
+#define auto_free_on_exit_ex(p, f) auto_free_on_exit_ex_(p, f, NULL, 0, NULL)
#endif
-gpointer auto_free_(gpointer p, const char *file, int line, const char *func);
gpointer auto_free_ex_(gpointer p, GDestroyNotify f, const char *file, int line, const char *func);
+gpointer auto_free_on_exit_ex_(gpointer p, GDestroyNotify f, const char *file, int line, const char *func);
-/* free all the auto_free marked items in the current thread */
+/* free all the auto_free marked items in the
+ * current thread with age > AF_DELAY_SECONDS */
void free_auto_free();
-/* call at thread termination */
+/* call at thread termination:
+ * free all the auto_free marked items in the
+ * current thread regardless of age */
void free_auto_free_thread_final();
/* call at program termination */
diff --git a/deps/sysobj_early/include/nice_name.h b/deps/sysobj_early/include/nice_name.h
new file mode 100644
index 00000000..80031c91
--- /dev/null
+++ b/deps/sysobj_early/include/nice_name.h
@@ -0,0 +1,32 @@
+/*
+ * sysobj - https://github.com/bp0/verbose-spork
+ * Copyright (C) 2018 Burt P. <pburt0@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef _NICE_NAME_H_
+#define _NICE_NAME_H_
+
+/* cleaned in-place */
+void nice_name_x86_cpuid_model_string(char *cpuid_model_string);
+
+/* Intel Graphics may have very long names,
+ * like "Intel Corporation Seventh Generation Something Core Something Something Integrated Graphics Processor Revision Ninety-four"
+ * cleaned in-place */
+void nice_name_intel_gpu_device(char *pci_ids_device_string);
+
+#endif
diff --git a/deps/sysobj_early/include/util_sysobj.h b/deps/sysobj_early/include/util_sysobj.h
new file mode 100644
index 00000000..1bff3d5a
--- /dev/null
+++ b/deps/sysobj_early/include/util_sysobj.h
@@ -0,0 +1,53 @@
+/*
+ * sysobj - https://github.com/bp0/verbose-spork
+ * Copyright (C) 2018 Burt P. <pburt0@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef _UTIL_SYSOBJ_H_
+#define _UTIL_SYSOBJ_H_
+
+#include <glib.h>
+#include "appf.h"
+
+/* string eq */
+#define SEQ(s1, s2) (g_strcmp0((s1), (s2)) == 0)
+
+/* handy for static halp */
+#define BULLET "\u2022"
+#define REFLINK(URI) "<a href=\"" URI "\">" URI "</a>"
+#define REFLINKT(TEXT, URI) "<a href=\"" URI "\">" TEXT "</a>"
+
+gboolean util_have_root();
+void util_null_trailing_slash(gchar *str); /* in-place */
+void util_compress_space(gchar *str); /* in-place, multiple whitespace replaced by one space */
+void util_strstrip_double_quotes_dumb(gchar *str); /* in-place, strips any double-quotes from the start and end of str */
+gchar *util_build_fn(const gchar *base, const gchar *name); /* returns "<base>[/<name>]" */
+gchar *util_canonicalize_path(const gchar *path); /* resolve . and .., but not symlinks */
+gchar *util_normalize_path(const gchar *path, const gchar *relto); /* resolve . and .., and symlinks */
+gsize util_count_lines(const gchar *str); /* doesn't count empty last line */
+gchar *util_escape_markup(gchar *v, gboolean replacing);
+int util_get_did(gchar *str, const gchar *lbl); /* ("cpu6", "cpu") -> 6, returns -1 if error */
+int util_maybe_num(gchar *str); /* returns the guessed base, 0 for not num */
+gchar *util_find_line_value(gchar *data, gchar *key, gchar delim);
+gchar *util_strchomp_float(gchar* str_float); /* in-place, must use , or . for decimal sep */
+gchar *util_safe_name(const gchar *name, gboolean lower_case); /* make a string into a name nice and safe for file name */
+
+/* to quiet -Wunused-parameter nagging. */
+#define PARAM_NOT_UNUSED(p) (void)p
+
+#endif
diff --git a/deps/sysobj_early/src/appf.c b/deps/sysobj_early/src/appf.c
new file mode 100644
index 00000000..432e0f30
--- /dev/null
+++ b/deps/sysobj_early/src/appf.c
@@ -0,0 +1,63 @@
+/*
+ * sysobj - https://github.com/bp0/verbose-spork
+ * Copyright (C) 2018 Burt P. <pburt0@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "appf.h"
+#define _GNU_SOURCE /* for vasprintf() */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+
+char *appf(char *str, const char *sep, const char *fmt, ...) {
+ char *buf = NULL;
+ int inlen, seplen, len;
+ va_list args;
+ va_start(args, fmt);
+ len = vasprintf(&buf, fmt, args);
+ va_end(args);
+ if (len < 0) return str;
+ if (!str) return buf;
+ inlen = strlen(str);
+ seplen = (inlen && sep) ? strlen(sep) : 0;
+ str = realloc(str, inlen + seplen + len + 1);
+ if (seplen) strcpy(str + inlen, sep);
+ strcpy(str + inlen + seplen, buf);
+ free(buf);
+ return str;
+}
+
+char *appfdup(const char *str, const char *sep, const char *fmt, ...) {
+ char *buf = NULL, *ret = NULL;
+ int inlen, seplen, len;
+ va_list args;
+ va_start(args, fmt);
+ len = vasprintf(&buf, fmt, args);
+ va_end(args);
+ if (len < 0) return NULL;
+ if (!str) return buf;
+ inlen = strlen(str);
+ seplen = (inlen && sep) ? strlen(sep) : 0;
+ ret = malloc(inlen + seplen + len + 1);
+ strcpy(ret, str);
+ if (seplen) strcpy(ret + inlen, sep);
+ strcpy(ret + inlen + seplen, buf);
+ free(buf);
+ return ret;
+}
diff --git a/deps/sysobj_early/src/auto_free.c b/deps/sysobj_early/src/auto_free.c
index 78f11690..3d75c169 100644
--- a/deps/sysobj_early/src/auto_free.c
+++ b/deps/sysobj_early/src/auto_free.c
@@ -19,15 +19,26 @@
*/
#include "auto_free.h"
+#if (AF_USE_SYSOBJ)
+#include "sysobj.h"
+#else
#include <stdio.h>
-//#include "sysobj.h"
+#define sysobj_elapsed() af_elapsed()
+#define sysobj_stats af_stats
+static struct {
+ double auto_free_next;
+ unsigned long long
+ auto_freed,
+ auto_free_len;
+} af_stats;
+#endif
static GMutex free_lock;
static GSList *free_list = NULL;
static gboolean free_final = FALSE;
static GTimer *auto_free_timer = NULL;
static guint free_event_source = 0;
-#define _elapsed() (auto_free_timer ? g_timer_elapsed(auto_free_timer, NULL) : 0)
+#define af_elapsed() (auto_free_timer ? g_timer_elapsed(auto_free_timer, NULL) : 0)
#define auto_free_msg(msg, ...) fprintf (stderr, "[%s] " msg "\n", __FUNCTION__, ##__VA_ARGS__) /**/
@@ -49,7 +60,7 @@ gboolean free_auto_free_sf(gpointer trash) {
return G_SOURCE_REMOVE;
}
free_auto_free();
- //sysobj_stats.auto_free_next = sysobj_elapsed() + AF_SECONDS;
+ sysobj_stats.auto_free_next = sysobj_elapsed() + AF_SECONDS;
return G_SOURCE_CONTINUE;
}
@@ -73,7 +84,7 @@ gpointer auto_free_ex_(gpointer p, GDestroyNotify f, const char *file, int line,
* will be called at sysobj_cleanup() and when exiting
* threads, as in sysobj_foreach(). */
free_event_source = g_timeout_add_seconds(AF_SECONDS, (GSourceFunc)free_auto_free_sf, NULL);
- //sysobj_stats.auto_free_next = sysobj_elapsed() + AF_SECONDS;
+ sysobj_stats.auto_free_next = sysobj_elapsed() + AF_SECONDS;
}
auto_free_item *z = g_new0(auto_free_item, 1);
@@ -83,22 +94,41 @@ gpointer auto_free_ex_(gpointer p, GDestroyNotify f, const char *file, int line,
z->file = file;
z->line = line;
z->func = func;
- z->stamp = _elapsed();
+ z->stamp = af_elapsed();
g_mutex_lock(&free_lock);
free_list = g_slist_prepend(free_list, z);
- //sysobj_stats.auto_free_len++;
+ sysobj_stats.auto_free_len++;
g_mutex_unlock(&free_lock);
return p;
}
-gpointer auto_free_(gpointer p, const char *file, int line, const char *func) {
- return auto_free_ex_(p, (GDestroyNotify)g_free, file, line, func);
+gpointer auto_free_on_exit_ex_(gpointer p, GDestroyNotify f, const char *file, int line, const char *func) {
+ if (!p) return p;
+
+ auto_free_item *z = g_new0(auto_free_item, 1);
+ z->ptr = p;
+ z->f_free = f;
+ z->thread = g_thread_self();
+ z->file = file;
+ z->line = line;
+ z->func = func;
+ z->stamp = -1.0;
+ g_mutex_lock(&free_lock);
+ free_list = g_slist_prepend(free_list, z);
+ sysobj_stats.auto_free_len++;
+ g_mutex_unlock(&free_lock);
+ return p;
}
static struct { GDestroyNotify fptr; char *name; }
free_function_tab[] = {
{ (GDestroyNotify) g_free, "g_free" },
- // ...
+#if (AF_USE_SYSOBJ)
+ { (GDestroyNotify) sysobj_free, "sysobj_free" },
+ { (GDestroyNotify) class_free, "class_free" },
+ { (GDestroyNotify) sysobj_filter_free, "sysobj_filter_free" },
+ { (GDestroyNotify) sysobj_virt_free, "sysobj_virt_free" },
+#endif
{ NULL, "(null)" },
};
@@ -106,18 +136,17 @@ static void free_auto_free_ex(gboolean thread_final) {
GThread *this_thread = g_thread_self();
GSList *l = NULL, *n = NULL;
long long unsigned fc = 0;
- double now = _elapsed();
+ double now = af_elapsed();
if (!free_list) return;
g_mutex_lock(&free_lock);
- if (DEBUG_AUTO_FREE) {
- unsigned long long ll = g_slist_length(free_list);
- auto_free_msg("%llu total items in queue, but will free from thread %p only... ", ll, this_thread);
- }
+ if (DEBUG_AUTO_FREE)
+ auto_free_msg("%llu total items in queue, but will free from thread %p only... ", sysobj_stats.auto_free_len, this_thread);
for(l = free_list; l; l = n) {
auto_free_item *z = (auto_free_item*)l->data;
n = l->next;
+ if (!free_final && z->stamp < 0) continue;
double age = now - z->stamp;
if (free_final || (z->thread == this_thread && (thread_final || age > AF_DELAY_SECONDS) ) ) {
if (DEBUG_AUTO_FREE == 2) {
@@ -143,8 +172,8 @@ static void free_auto_free_ex(gboolean thread_final) {
}
if (DEBUG_AUTO_FREE)
auto_free_msg("... freed %llu (from thread %p)", fc, this_thread);
- //sysobj_stats.auto_freed += fc;
- //sysobj_stats.auto_free_len -= fc;
+ sysobj_stats.auto_freed += fc;
+ sysobj_stats.auto_free_len -= fc;
g_mutex_unlock(&free_lock);
}
diff --git a/deps/sysobj_early/src/nice_name.c b/deps/sysobj_early/src/nice_name.c
new file mode 100644
index 00000000..c3c8d3ce
--- /dev/null
+++ b/deps/sysobj_early/src/nice_name.c
@@ -0,0 +1,157 @@
+/*
+ * sysobj - https://github.com/bp0/verbose-spork
+ * Copyright (C) 2018 Burt P. <pburt0@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#define _GNU_SOURCE
+#include <string.h>
+#include <ctype.h>
+
+#include "nice_name.h"
+#include "util_sysobj.h"
+
+/* export */
+/* replaces the extra chars with spaces, then when done with a series of
+ * str_shorten()s, use util_compress_space() to squeeze. */
+gboolean str_shorten(gchar *str, const gchar *find, const gchar *replace) {
+ if (!str || !find || !replace) return FALSE;
+ long unsigned lf = strlen(find);
+ long unsigned lr = strlen(replace);
+ gchar *p = strstr(str, find);
+ if (p) {
+ if (lr > lf) lr = lf;
+ gchar *buff = g_strnfill(lf, ' ');
+ strncpy(buff, replace, lr);
+ strncpy(p, buff, lf);
+ g_free(buff);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void nice_name_x86_cpuid_model_string(char *cpuid_model_string) {
+ static gboolean move_vendor_to_front = TRUE;
+ static gboolean remove_amd_compute_cores = FALSE;
+ static gboolean remove_amd_xn_ncore_redundancy = TRUE;
+ static gboolean remove_processor_cpu_apu_etc = TRUE;
+ static gboolean remove_mhz_ghz = TRUE;
+
+ if (!cpuid_model_string) return;
+ g_strstrip(cpuid_model_string);
+
+ while(str_shorten(cpuid_model_string, "Genuine Intel", "Intel")) {};
+ while(str_shorten(cpuid_model_string, "(R)", "")) {};
+ while(str_shorten(cpuid_model_string, "(r)", "")) {};
+ while(str_shorten(cpuid_model_string, "(TM)", "")) {};
+ while(str_shorten(cpuid_model_string, "(tm)", "")) {};
+ while(str_shorten(cpuid_model_string, "(c)", "")) {};
+ while(str_shorten(cpuid_model_string, "(C)", "")) {};
+ while(str_shorten(cpuid_model_string, "@", "")) {};
+
+ if (move_vendor_to_front) {
+ /* vendor not at the beginning, try to move there.
+ * ex: Mobile AMD Sempron(tm) Processor 3600+
+ * ex: Dual Core AMD Opteron(tm) Processor 165 */
+ char *intel = strstr(cpuid_model_string, "Intel ");
+ char *amd = strstr(cpuid_model_string, "AMD ");
+ if (amd || intel) {
+ if (amd && !intel) {
+ if (amd != cpuid_model_string) {
+ int l = amd - cpuid_model_string;
+ memmove(cpuid_model_string+4, cpuid_model_string, l);
+ memcpy(cpuid_model_string, "AMD ", 4);
+ }
+ } else if (intel && !amd) {
+ int l = intel - cpuid_model_string;
+ memmove(cpuid_model_string+6, cpuid_model_string, l);
+ memcpy(cpuid_model_string, "Intel ", 6);
+ }
+ }
+ }
+
+ if (g_str_has_prefix(cpuid_model_string, "AMD")) {
+ while(str_shorten(cpuid_model_string, "Mobile Technology", "Mobile")) {};
+
+ if (remove_amd_compute_cores) {
+ if (strcasestr(cpuid_model_string, " COMPUTE CORES ")) {
+ /* ex: AMD FX-9800P RADEON R7, 12 COMPUTE CORES 4C+8G */
+ char *comma = strchr(cpuid_model_string, ',');
+ if (comma) *comma = 0;
+ }
+ }
+
+ if (remove_amd_xn_ncore_redundancy) {
+ /* remove Xn n-core redundancy */
+ if (strstr(cpuid_model_string, "X2")) {
+ str_shorten(cpuid_model_string, "Dual Core", "");
+ str_shorten(cpuid_model_string, "Dual-Core", "");
+ }
+ if (strstr(cpuid_model_string, "X3"))
+ str_shorten(cpuid_model_string, "Triple-Core", "");
+ if (strstr(cpuid_model_string, "X4"))
+ str_shorten(cpuid_model_string, "Quad-Core", "");
+ }
+ }
+
+ if (g_str_has_prefix(cpuid_model_string, "Cyrix")) {
+ while(str_shorten(cpuid_model_string, "tm ", "")) {};
+ }
+
+ if (remove_processor_cpu_apu_etc) {
+ while(str_shorten(cpuid_model_string, " CPU", "")) {};
+ while(str_shorten(cpuid_model_string, " APU", "")) {};
+ while(str_shorten(cpuid_model_string, " Integrated Processor", "")) {};
+ while(str_shorten(cpuid_model_string, " Processor", "")) {};
+ while(str_shorten(cpuid_model_string, " processor", "")) {};
+ } else {
+ while(str_shorten(cpuid_model_string, " processor", " Processor")) {};
+ }
+
+ if (remove_mhz_ghz) {
+ /* 1400MHz, 1.6+ GHz, etc */
+ char *u = NULL;
+ while((u = strcasestr(cpuid_model_string, "GHz"))
+ || (u = strcasestr(cpuid_model_string, "MHz")) ) {
+ if (u[3] == '+') u[3] = ' ';
+ strncpy(u, " ", 3);
+ while(isspace(*u)) {u--;}
+ while (isdigit(*u) || *u == '.' || *u == '+')
+ { *u = ' '; u--;}
+ }
+ }
+
+ /* finalize */
+ util_compress_space(cpuid_model_string);
+ g_strstrip(cpuid_model_string);
+}
+
+/* Intel Graphics may have very long names,
+ * like "Intel Corporation Seventh Generation Something Core Something Something Integrated Graphics Processor Revision Ninety-four" */
+void nice_name_intel_gpu_device(char *pci_ids_device_string) {
+ while(str_shorten(pci_ids_device_string, "(R)", "")) {}; /* Intel(R) -> Intel */
+ str_shorten(pci_ids_device_string, "Graphics Controller", "Graphics");
+ str_shorten(pci_ids_device_string, "Graphics Device", "Graphics");
+ str_shorten(pci_ids_device_string, "Generation", "Gen");
+ str_shorten(pci_ids_device_string, "Core Processor", "Core");
+ str_shorten(pci_ids_device_string, "Atom Processor", "Atom");
+ str_shorten(pci_ids_device_string, "Xeon Processor", "Xeon");
+ str_shorten(pci_ids_device_string, "Celeron Processor", "Celeron");
+ str_shorten(pci_ids_device_string, "Pentium Processor", "Pentium");
+ util_compress_space(pci_ids_device_string);
+ g_strstrip(pci_ids_device_string);
+}
diff --git a/deps/sysobj_early/src/util_sysobj.c b/deps/sysobj_early/src/util_sysobj.c
new file mode 100644
index 00000000..de3ec8b2
--- /dev/null
+++ b/deps/sysobj_early/src/util_sysobj.c
@@ -0,0 +1,303 @@
+/*
+ * sysobj - https://github.com/bp0/verbose-spork
+ * Copyright (C) 2018 Burt P. <pburt0@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#define _GNU_SOURCE
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h> /* for realpath() */
+#include <unistd.h> /* for getuid() */
+#include <ctype.h> /* for isxdigit(), etc. */
+
+#include "util_sysobj.h"
+
+gchar *util_build_fn(const gchar *base, const gchar *name) {
+ gchar *ret = NULL;
+ gboolean slash = TRUE;
+
+ if (!base) return NULL;
+ if (base[strlen(base)-1] == '/')
+ slash = FALSE;
+
+ if (name) {
+ if (*name == '/') slash = FALSE;
+ ret = g_strdup_printf("%s%s%s", base, slash ? "/" : "", name);
+ } else
+ ret = g_strdup(base);
+
+ util_null_trailing_slash(ret);
+ return ret;
+}
+
+gboolean util_have_root() {
+ return (getuid() == 0) ? TRUE : FALSE;
+}
+
+void util_compress_space(gchar *str) {
+ gchar *p = str, *t = str;
+ if (str && *str) {
+ int n = 0;
+ while(*p) {
+ if (isspace(*p) ) {
+ if (!n)
+ *t++ = ' ';
+ n++;
+ } else {
+ n = 0;
+ if (t != p)
+ *t = *p;
+ t++;
+ }
+ p++;
+ }
+ }
+ if (t != p)
+ *t = 0;
+}
+
+void util_null_trailing_slash(gchar *str) {
+ if (str && *str) {
+ if (str[strlen(str)-1] == '/' )
+ str[strlen(str)-1] = 0;
+ }
+}
+
+gsize util_count_lines(const gchar *str) {
+ gchar **lines = NULL;
+ gsize count = 0;
+
+ if (str) {
+ lines = g_strsplit(str, "\n", 0);
+ count = g_strv_length(lines);
+ if (count && *lines[count-1] == 0) {
+ /* if the last line is empty, don't count it */
+ count--;
+ }
+ g_strfreev(lines);
+ }
+
+ return count;
+}
+
+int util_get_did(gchar *str, const gchar *lbl) {
+ int id = -2;
+ gchar tmpfmt[128] = "";
+ gchar tmpchk[128] = "";
+ sprintf(tmpfmt, "%s%s", lbl, "%d");
+ if ( sscanf(str, tmpfmt, &id) ) {
+ sprintf(tmpchk, tmpfmt, id);
+ if ( SEQ(str, tmpchk) )
+ return id;
+ }
+ return -1;
+}
+
+gchar *util_escape_markup(gchar *v, gboolean replacing) {
+ gchar *clean, *tmp;
+ gchar **vl;
+ if (v == NULL) return NULL;
+
+ vl = g_strsplit(v, "&", -1);
+ if (g_strv_length(vl) > 1)
+ clean = g_strjoinv("&amp;", vl);
+ else
+ clean = g_strdup(v);
+ g_strfreev(vl);
+
+ vl = g_strsplit(clean, "<", -1);
+ if (g_strv_length(vl) > 1) {
+ tmp = g_strjoinv("&lt;", vl);
+ g_free(clean);
+ clean = tmp;
+ }
+ g_strfreev(vl);
+
+ vl = g_strsplit(clean, ">", -1);
+ if (g_strv_length(vl) > 1) {
+ tmp = g_strjoinv("&gt;", vl);
+ g_free(clean);
+ clean = tmp;
+ }
+ g_strfreev(vl);
+
+ if (replacing)
+ g_free((gpointer)v);
+ return clean;
+}
+
+void util_strstrip_double_quotes_dumb(gchar *str) {
+ if (!str) return;
+ g_strstrip(str);
+ gchar *front = str, *back = str + strlen(str) - 1;
+ if (back <= front) return;
+ while(*front == '"') { *front = 'X'; front++; }
+ while(*back == '"') { *back = 0; back--; }
+ int nl = strlen(front);
+ memmove(str, front, nl);
+ str[nl] = 0;
+}
+
+/* "194.110 MHz" -> "194.11 MHz"
+ * "5,0 golden rings" -> "5 golden rings" */
+gchar *util_strchomp_float(gchar* str_float) {
+ if (!str_float) return NULL;
+ char *dot = strchr(str_float, '.');
+ char *comma = strchr(str_float, ',');
+ char *p = NULL, *dec = NULL, *src = NULL, *target = NULL;
+ if (!dot && !comma) return str_float;
+ if (dot > comma)
+ dec = dot;
+ else
+ dec = comma;
+ p = dec + 1;
+ while(isdigit(*p)) p++;
+ target = src = p;
+ p--;
+ while(*p == '0') { target = p; p--; };
+ if (target == dec + 1)
+ target = dec;
+ if (target != src)
+ memmove(target, src, strlen(src)+1);
+ return str_float;
+}
+
+/* resolve . and .., but not symlinks */
+gchar *util_normalize_path(const gchar *path, const gchar *relto) {
+ gchar *resolved = NULL;
+#if GLIB_CHECK_VERSION(2, 58, 0)
+ resolved = g_canonicalize_filename(path, relto);
+#else
+ /* burt's hack version */
+ gchar *frt = relto ? g_strdup(relto) : NULL;
+ util_null_trailing_slash(frt);
+ gchar *fpath = frt
+ ? g_strdup_printf("%s%s%s", frt, (*path == '/') ? "" : "/", path)
+ : g_strdup(path);
+ g_free(frt);
+
+ /* note: **parts will own all the part strings throughout */
+ gchar **parts = g_strsplit(fpath, "/", -1);
+ gsize i, pn = g_strv_length(parts);
+ GList *lparts = NULL, *l = NULL, *n = NULL, *p = NULL;
+ for (i = 0; i < pn; i++)
+ lparts = g_list_append(lparts, parts[i]);
+
+ i = 0;
+ gchar *part = NULL;
+ l = lparts;
+ while(l) {
+ n = l->next; p = l->prev;
+ part = l->data;
+
+ if (SEQ(part, ".") )
+ lparts = g_list_delete_link(lparts, l);
+
+ if (SEQ(part, "..") ) {
+ if (p)
+ lparts = g_list_delete_link(lparts, p);
+ lparts = g_list_delete_link(lparts, l);
+ }
+
+ l = n;
+ }
+
+ resolved = g_strdup("");
+ l = lparts;
+ while(l) {
+ resolved = g_strdup_printf("%s%s/", resolved, (gchar*)l->data );
+ l = l->next;
+ }
+ g_list_free(lparts);
+ util_null_trailing_slash(resolved);
+ g_free(fpath);
+
+ g_strfreev(parts);
+#endif
+
+ return resolved;
+}
+
+/* resolve . and .. and symlinks */
+gchar *util_canonicalize_path(const gchar *path) {
+ char *resolved = realpath(path, NULL);
+ gchar *ret = g_strdup(resolved); /* free with g_free() instead of free() */
+ free(resolved);
+ return ret;
+}
+
+int util_maybe_num(gchar *str) {
+ int r = 10, i = 0, l = (str) ? strlen(str) : 0;
+ if (!l || l > 32) return 0;
+ gchar *chk = g_strdup(str);
+ g_strstrip(chk);
+ l = strlen(chk);
+ if (l > 2 && !strncmp(chk, "0x", 2)) {
+ i = 2; r = 16;
+ }
+ for (; i < l; i++) {
+ if (isxdigit(chk[i])) {
+ if (!isdigit(chk[i]))
+ r = 16;
+ } else {
+ r = 0;
+ break;
+ }
+ }
+ g_free(chk);
+ return r;
+}
+
+gchar *util_safe_name(const gchar *name, gboolean lower_case) {
+ if (!name) return NULL;
+ const gchar *p = name;
+ gchar *buff = g_new0(gchar, strlen(name) + 1);
+ gchar *t = buff;
+ while(*p) {
+ gboolean ok = g_ascii_isalnum(*p);
+ if (*p == '.' || *p == '-') ok = TRUE;
+ if (*p == '/') ok = FALSE;
+ *t = ok ? *p : '_';
+ t++;
+ p = g_utf8_next_char(p);
+ }
+ gchar *ret = lower_case ? g_ascii_strdown(buff, -1) : g_strdup(buff);
+ g_free(buff);
+ return ret;
+}
+
+gchar *util_find_line_value(gchar *data, gchar *key, gchar delim) {
+ gchar *ret = NULL;
+ gchar **lines = g_strsplit(data, "\n", -1);
+ gsize line_count = g_strv_length(lines);
+ gsize i = 0;
+ for (i = 0; i < line_count; i++) {
+ gchar *line = lines[i];
+ gchar *value = g_utf8_strchr(line, -1, delim);
+ if (!value) continue;
+ *value = 0;
+ value = g_strstrip(value+1);
+ gchar *lkey = g_strstrip(line);
+
+ if (SEQ(lkey, key) ) {
+ ret = g_strdup(value);
+ }
+ }
+ g_strfreev(lines);
+ return ret;
+}