pqy330 pqy330
关注数: 0 粉丝数: 94 发帖数: 2,602 关注贴吧数: 1
DSDT文件语法求教 我已提取自己机器的DSDT并反编译出来了。想改电池状态函数_BST,其原型如下: Method (_BST, 0, NotSerialized) // _BST: Battery Status { Name (PKG1, Package (0x04) { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }) Store (And (ECRD (RefOf (B1ST)), 0x07), Index (PKG1, Zero )) Store (B1CC, Index (PKG1, 0x02)) Return (PKG1) } 其中 Store (And (ECRD (RefOf (B1ST)), 0x07), Index (PKG1, Zero )) 这一句报错,说需要Reference类型的参数,但提供的是Integer类型的。And操作符得到的的确是Integer类型的。我注释掉这一句后虽然可以显示电池剩余电量,但是电池是否正在充电就不能检测了,因为PKG1的第一个元素存储的正是充电状态。 我尝试将其改为: Method (_BST, 0, NotSerialized) // _BST: Battery Status { Name (PKG1, Package (0x04) { Zero, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }) And (ECRD (RefOf (B1ST)), 0x07, Local0) CondRefOf(Local0,Local1) Store (Local1,Index (PKG1, Zero)) Store (B1CC, Index (PKG1, 0x02)) Return (PKG1) } 但还是报同样的错误,CondRefOf生成引用类型不知为何还是不对。ACPI标准文档大概浏览了一会,很多细节还不是很懂,请大神赐教:到底如何生成其需要的引用类型?或者说Integer如何转化为Reference? 附上B1CC的定义: Field (ECF2, ByteAcc, Lock, Preserve) { Offset (0x01), PLMX, 8, LTMP, 8, RPWR, 1, , 2, CFAN, 1, , 2, LSTE, 1, Offset (0x04), SPTR, 8, SSTS, 8, SADR, 8, SCMD, 8, SBFR, 256, SCNT, 8, Offset (0x2F), CTMP, 8, DOCK, 1, EJET, 1, , 1, PBNS, 1, VPWR, 1, Offset (0x31), SCAN, 8, B1ST, 8, B1CC, 16, ...
论LIBRARY_PATH 首先,echo ${LIBRARY_PATH}什么也没有。 然后gcc -v -m64 test.c -o test 显示LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/64/:/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/:/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/../../../:/lib/:/usr/lib/ 接着gcc -v -m32 test.c -o test 显示LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/32/:/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/:/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/../../../:/lib/:/usr/lib/ 由于/lib是指向/lib64的,/usr/lib是指向/usr/lib64的链接,/usr/lib32和/lib32才是32位库真正的位置,于是-m32链接失败。 然后我就来个LIBRARY_PATH=/lib32:/usr/lib32:$LIBRARY_PATH gcc -v -m32 teset.c -o test 结果显示LIBRARY_PATH=/lib32/../lib/:/usr/lib32/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/32/:/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/lib32/:/usr/lib32/:./:/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/:/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/../../../:/lib/:/usr/lib/ 看到nc的写法没?/lib32/../lib/???/usr/lib32/../lib/??? 最后一招杀手锏gcc -v -m32 -L/lib32 -L/usr/lib32 test.c -o test 显示LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/32/:/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/:/usr/lib/gcc/x86_64-pc-linux-gnux32/4.7.3/../../../:/lib/:/usr/lib/完全不能撼动LIBRARY_PATH变量。 现在谁能告诉我这个神秘的变量在哪定义的?怎样才能修改它?
首页 1 2 3 4 5 6 下一页