Subject: Re: Status report: sysmon_cpufreq(9) + powerctl(8)
To: Juan RP <juan@xtrarom.org>
From: Iain Hibbert <plunky@rya-online.net>
List: tech-kern
Date: 09/28/2006 23:13:20
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--0-1383307801-1159481600=:4376
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Thu, 28 Sep 2006, Juan RP wrote:

> I changed it to DEV_PROP_D(x)	device_properties(x)

For me, I would just use device_properties(x) directly :)

> Thanks for all these comments, I've updated the code both kernel and
> userland.

more comments attached :)

> Now running powerctl again:
>
> [juan@nocturno][~]> ./powerctl
> zsh: segmentation fault (core dumped)  ./powerctl

what about ./powerctl -r ?

> sysmonioctl_cpufreq: copyout_ioctl, error=12.

probably corrupted dictionary when you released the keysyms?

Looking at powerctl.c

seems you got confused about the function of strerror(), you got an error
in the recv_ioctl() but never exited..

you need to use prop_object_iterator_release()

prop_dictionary_get() and prop_iterator_next() do not retain the object,
you do not need to release it.

I dont think you need to worry about releasing objects so much in a single
pass utility such as this - exit will release everything anyway. Actually,
it is good to do that but I normally dont bother for err(..)

iain
--0-1383307801-1159481600=:4376
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=cpufreq.diff
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.NEB.4.64.0609282313200.4376@localhost.>
Content-Description: more comments
Content-Disposition: attachment; filename=cpufreq.diff

KwkJZXJyb3IgPSBwcm9wX2RpY3Rpb25hcnlfY29weWluX2lvY3RsKHBsaXN0
LCBjbWQsICZ1ZGljdCk7DQorCQlpZiAoZXJyb3IpIHsNCisJCQlSRUxFQVNF
X09CSkVDVCh1ZGljdCk7DQorCQkJYnJlYWs7DQorCQl9DQoNCm5vIHJlbGVh
c2UgbmVlZGVkIGhlcmUNCg0KKwkJbXlzdHIgPSBwcm9wX2RpY3Rpb25hcnlf
Z2V0KHVkaWN0LCAiY3B1ZnJlcS1kcml2ZXItbmFtZSIpOw0KKwkJaWYgKHBy
b3Bfb2JqZWN0X3R5cGUobXlzdHIpICE9IFBST1BfVFlQRV9TVFJJTkcpIHsN
CisJCQlEUFJJTlRGKCgiJXM6IG15c3RyIG5vdCBhY2NlcHRlZC5cbiIsIF9f
ZnVuY19fKSk7DQorCQkJUkVMRUFTRV9PQkpFQ1QodWRpY3QpOw0KKwkJCWVy
cm9yID0gRU5PTUVNOw0KKwkJCWJyZWFrOw0KKwkJfQ0KDQphbmQgcHJvYmFi
bHkgc2hvdWxkIGJlIEVJTlZBTCBmb3IgdGhpcz8gKEVOT0FUVFI/KQ0KDQor
CQkvKg0KKwkJICogU3dpdGNoIHRvIHJlcXVlc3RlZCBkcml2ZXIgdmlhIGEg
c3VwcGxpZWQgc3RyaW5nDQorCQkgKiBmcm9tIHRoZSB1c2VybGFuZCBkaWN0
aW9uYXJ5Lg0KKwkJICovDQorCQlMSVNUX0ZPUkVBQ0gobHNtY2YsICZzeXNt
b25fY3B1ZnJlcV9saXN0LCBzbWNmX2xpc3QpDQorCQkJaWYgKHN0cmNtcChs
c21jZi0+c21jZl9uYW1lLA0KKwkJCSAgICBwcm9wX3N0cmluZ19jc3RyaW5n
X25vY29weShteXN0cikpID09IDApDQorCQkJCWJyZWFrOyAvKiBmb3VuZCAq
Lw0KDQppZiAocHJvcF9zdHJpbmdfZXF1YWxzX2NzdHJpbmcobXlzdHIsIGxz
bWNmLT5zbWNmX25hbWUpKQ0KCWJyZWFrOw0KDQorCQlzZGljdCA9IHN5c21v
bl9jcHVmcmVxX3JldHVybl9zbWNmZGljdChERVZfUFJPUF9EKGNpLT5jaV9k
ZXYpLA0KKwkgIAkJICAgIGNpLA0KKwkJCSAgICBwcm9wX3N0cmluZ19jc3Ry
aW5nX25vY29weShteXN0cikpOw0KKw0KKwkJS0FTU0VSVCgoc2RpY3QgIT0g
TlVMTCkpOw0KDQp0aGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gTlVMTA0KDQor
CQlEUFJJTlRGKCgiJXM6IG5ld2ZyZXE6ICVkIGNmcmVxX3QtPmNmX2N1cmZy
ZXE6ICVkXG4iLA0KKwkJICAgIF9fZnVuY19fLCAodW5zaWduZWQpbmV3ZnJl
cSwNCisJCSAgICAodW5zaWduZWQpbHNtY2YtPmNmcmVxX2RhdGFfdC0+Y2Zf
Y3VyZnJlcSkpOw0KDQpsc21jZiBtYXkgYmUgTlVMTCAobm90IGZvdW5kLCBh
Ym92ZSkNCg0KK3N0YXRpYyBpbnQNCitzeXNtb25fY3B1ZnJlcV9yZWN2X2Rh
dGEoc3RydWN0IHN5c21vbl9jcHVmcmVxICpzbWNmLA0KKwkJCSBzdHJ1Y3Qg
Y3B1X2luZm8gKmNpLA0KKwkJCSBpbnQgdHlwZSkNCit7DQorCXByb3BfYXJy
YXlfdCBhcnJheTsNCisJcHJvcF9kaWN0aW9uYXJ5X3QgZGljdDsNCisJcHJv
cF9vYmplY3RfdCBvYmo7DQorCWludCBpOw0KKw0KKwkvKg0KKwkgKiBDcmVh
dGUgb3VyIHN5c21vbl9jcHVmcmVxIGRpY3Rpb25hcnkuDQorCSAqLw0KKwlk
aWN0ID0gcHJvcF9kaWN0aW9uYXJ5X2NyZWF0ZSgpOw0KKwlpZiAoZGljdCA9
PSBOVUxMKQ0KKwkJcmV0dXJuIEVJTlZBTDsNCisNCisJLyoNCisJICogQWRk
IGRyaXZlcidzIG5hbWUgaW50byBvdXIgZGV2aWNlX3QgZGljdGlvbmFyeS4N
CisJICovDQorCWlmICghcHJvcF9kaWN0aW9uYXJ5X3NldChERVZfUFJPUF9E
KGNpLT5jaV9kZXYpLA0KKwkJCQlzbWNmLT5zbWNmX25hbWUsIGRpY3QpKSB7
DQorCQlSRUxFQVNFX09CSkVDVChkaWN0KTsNCisJCXJldHVybiBFTk9NRU07
DQorCX0NCg0KYmV0dGVyIHRvIGFkZCB0aGlzIGF0IHRoZSBlbmQgd2hlbiBp
dHMgYnVpbHQNCg0KKw0KKwkvKg0KKwkgKiBBZGQgaW50byBvdXIgZGljdGlv
bmFyeSBhIHBhaXIgd2l0aCBrZXkvaW50ZWdlciBmb3INCisJICogdGhlIGN1
cnJlbnQgZnJlcXVlbmN5Lg0KKwkgKi8NCisJb2JqID0gcHJvcF9udW1iZXJf
Y3JlYXRlX2ludGVnZXIoc21jZi0+Y2ZyZXFfZGF0YV90LT5jZl9jdXJmcmVx
KTsNCisJaWYgKHByb3Bfb2JqZWN0X3R5cGUob2JqKSAhPSBQUk9QX1RZUEVf
TlVNQkVSKSB7DQorCQlSRUxFQVNFX09CSkVDVChkaWN0KTsNCisJCXJldHVy
biBFTk9NRU07DQorCX0NCg0Kbm8gbmVlZCB0byBjaGVjayB0eXBlIA0KDQor
CWlmICghcHJvcF9kaWN0aW9uYXJ5X3NldChkaWN0LCAiY3VycmVudC1mcmVx
dWVuY3kiLCBvYmopKSB7DQorCQlSRUxFQVNFX09CSkVDVChkaWN0KTsNCisJ
CXJldHVybiBFTk9NRU07DQorCX0NCg0KSSBkb250IHRoaW5rIHRoaXMgY2Fu
IGZhaWwgZWl0aGVyDQoNCisNCisJZm9yIChpID0gMDsgc21jZi0+Y2ZyZXFf
ZGF0YV90LT5jZl9mcWxpc3RbaV0gPiAwOyBpKyspIHsNCisJCXByb3Bfb2Jq
ZWN0X3QgZnJlcTsNCisNCisJCWZyZXEgPSBwcm9wX251bWJlcl9jcmVhdGVf
aW50ZWdlcigNCisJCQkJc21jZi0+Y2ZyZXFfZGF0YV90LT5jZl9mcWxpc3Rb
aV0NCisJCQkJKTsNCisJCWlmIChmcmVxID09IE5VTEwgfHwgIXByb3BfYXJy
YXlfYWRkKGFycmF5LCBmcmVxKSkgew0KKwkJCVJFTEVBU0VfT0JKRUNUKGFy
cmF5KTsNCisJCQlSRUxFQVNFX09CSkVDVChkaWN0KTsNCisJCQlyZXR1cm4g
RU5PTUVNOw0KKwkJfQ0KKwl9DQoNCnlvdSBzaG91bGQgcmVsZWFzZSBmcmVx
DQoNCitzeXNtb25fY3B1ZnJlcV9yZXR1cm5fc21jZmRpY3QocHJvcF9kaWN0
aW9uYXJ5X3QgZGljdCwNCisJCQkgc3RydWN0IGNwdV9pbmZvICpjaSwNCisJ
CQkgY29uc3QgY2hhciAqZHJ2bikNCit7DQorCXByb3BfZGljdGlvbmFyeV90
IHNkaWN0Ow0KKwlwcm9wX29iamVjdF90IG9iaiwgbXlvYmo7DQorCXByb3Bf
b2JqZWN0X2l0ZXJhdG9yX3QgaXRlcjsNCisJaW50IGo7DQorDQorCXNkaWN0
ID0gbXlvYmogPSBpdGVyID0gTlVMTDsNCisNCisJRFBSSU5URigoIiVzOiBk
cnZuYW1lPSVzXG4iLCBfX2Z1bmNfXywgZHJ2bikpOw0KKw0KKwlpdGVyID0g
cHJvcF9kaWN0aW9uYXJ5X2l0ZXJhdG9yKGRpY3QpOw0KKwlmb3IgKGogPSAw
OyAob2JqID0gcHJvcF9vYmplY3RfaXRlcmF0b3JfbmV4dChpdGVyKSkgIT0g
TlVMTDsgaisrKSB7DQorCQlpZiAoc3RyY21wKGRydm4sIA0KKwkJICAgIHBy
b3BfZGljdGlvbmFyeV9rZXlzeW1fY3N0cmluZ19ub2NvcHkob2JqKSkgPT0g
MCkgew0KKwkJCW15b2JqID0gcHJvcF9kaWN0aW9uYXJ5X2dldChkaWN0LCBk
cnZuKTsNCisJCQlpZiAocHJvcF9vYmplY3RfdHlwZShteW9iaikgIT0gUFJP
UF9UWVBFX0RJQ1RJT05BUlkpIHsNCisJCQkJRFBSSU5URigoIiVzOiBteW9i
aiAhPSBkaWN0aW9uYXJ5XG4iLA0KKwkJCQkgICAgX19mdW5jX18pKTsNCisJ
CQkJZ290byBvdXQ7DQoNCmJyZWFrOwk/DQoNCisJCQl9DQorDQorCQkJc2Rp
Y3QgPSBwcm9wX2RpY3Rpb25hcnlfY29weShteW9iaik7DQorCQkJS0FTU0VS
VCgoc2RpY3QgIT0gTlVMTCkpOw0KKwkJCURQUklOVEYoKCIlczoga2V5c3lt
PSVzXG4iLCBfX2Z1bmNfXywNCisJCQkgICAgcHJvcF9kaWN0aW9uYXJ5X2tl
eXN5bV9jc3RyaW5nX25vY29weShvYmopKSk7DQoNCmJyZWFrOwk/DQoNCisJ
CX0NCisNCisJCVJFTEVBU0VfT0JKRUNUKG9iaik7DQoNCnRoZSBrZXkgaXMg
bm90IHJldGFpbmVkLCBzbyBub3QgbmVlZGVkDQoNCisJfQ0KKw0KKwlSRUxF
QVNFX09CSkVDVChpdGVyKTsNCg0KcHJvcF9vYmplY3RfaXRlcmF0b3JfcmVs
ZWFzZShpdGVyKQ0KDQorb3V0Og0KKwlSRUxFQVNFX09CSkVDVChvYmopOw0K
KwlSRUxFQVNFX09CSkVDVChpdGVyKTsNCisJcmV0dXJuIE5VTEw7DQoNCnVu
bmVlZGVkIChpZiB5b3UgYnJlYWsgaW4gaW5uZXIgaWYsIHRoZSBpdGVyIGlz
IHJlbGVhc2VkIGFuZCBzZGljdCA9PSBOVUxMKQ0K

--0-1383307801-1159481600=:4376--