View Single Post
Posts: 567 | Thanked: 2,965 times | Joined on Oct 2009
#1
This post is basically a dump of which binaries use which kernel interfaces and whether they are open source so we can ID which ones we can fix directly through code, which ones we dont need to change at all and which ones we need to fix some other way (e.g. binary patching, LD_PRELOAD hack, kernel changes, custom kernel modules or otherwise)

First up, users of /sys/*: (actual paths being used will only be mentioned in the case where its not open source or directly changeable and where its not going away for other reasons)
/etc/event.d/bluetooth-sysinfo (will go away, whatever bluetooth chip being used will have its own way of doing things)
/etc/event.d/bme (BME has been replaced, will go away)
/etc/event.d/cmt-act-dead (ssc-daemon package will need to be replaced, will go away)
/etc/event.d/pulseaudio (open source as part of pulseaudio package)
/etc/event.d/rcS-late (open source as part of system-services package)
/etc/event.d/sgx (Neo900 wont be using the N900 drivers, it will be using drivers provided by TI or Imagination or whoever and that will come with its own stuff that talks to whatever kernel interface the kernel part of those drivers ends up providing)
/etc/event.d/testserver (testserver package not required, this can go away)
/etc/init.d/hal (open source as part of the hal package)
/etc/init.d/rcS (open source as part of the mini-rc package)
/etc/init.d/softupd.rcS (softupd package not required, this can go away)
/etc/omapcam/omap3camd.conf (part of omap3camd package, is a config file, can change it easily)
/etc/osso-backup/restore.d/always/bluez-restore.sh (part of maemo-bluez-compat package, is a shell script, can change it easily)
/home/opt/lib/qt4/plugins/mediaservice/libqtmedia_v4lengine.so (open source as part of libqtm-multimedia package)
/home/opt/lib/qt4/plugins/sensors/libqtsensors_n900.so (open source as part of libqtm-sensors package)
/home/opt/lib/libqtsysteminfo.so.1.0.2 (open source as part of libqtm-systeminfo package)
/lib/libblkid.so.1.0 (open source as part of libblkid1 package)
/lib/udev/mmc_id (open source as part of udev package)
/sbin/dosfsck (open source as part of dosfstools package)
/sbin/mce (open source as part of cloned mce package)
/sbin/preinit (open source as part of cloned getbootstate package)
/sbin/read_cfg.awk (open source as part of cloned getboostate package)
/usr/bin/fmradio-tool (open source as part of n900-fmrx-enabler package)
/usr/bin/rtcom-messaging-ui.launch (part of rtcom-messaging-ui package, uses /sys/kernel/low_watermark)
/usr/bin/testserver (testserver package not required, this can go away)
/usr/bin/xorg (open source as part of xserver-xorg-core package)
/usr/lib/testserver/modules/handlers/accessory.so.0.0.0 (testserver package not required, this can go away)
/usr/lib/xorg/modules/drivers/fbdev_drv.so (Neo900 wont be using the N900 drivers, it will be using drivers provided by TI or Imagination or whoever and that will come with its own stuff that talks to whatever kernel interface the kernel part of those drivers ends up providing)
/usr/lib/testserver/modules/handlers/fm_radio.so.0.0.0 (testserver package not required, this can go away)
/usr/lib/testserver/modules/handlers/light.so.0.0.0 (testserver package not required, this can go away)
/usr/lib/testserver/modules/handlers/nvd.so.0.0.0 (testserver package not required, this can go away)
/usr/lib/testserver/modules/handlers/phone_info.so.0.0.0 (testserver package not required, this can go away)
/usr/lib/testserver/modules/handlers/selftests.so.0.0.0 (testserver package not required, this can go away)
/usr/lib/testserver/modules/handlers/sensor.so.0.0.0 (testserver package not required, this can go away)
/usr/lib/testserver/modules/handlers/sos_ape_light.so.0.0.0 (testserver package not required, this can go away)
/usr/lib/testserver/modules/handlers/sos_mmc.so.0.0.0 (testserver package not required, this can go away)
/usr/lib/testserver/modules/handlers/sos_panel.so.0.0.0 (testserver package not required, this can go away)
/usr/lib/testserver/modules/handlers/sos_switch.so.0.0.0 (testserver package not required, this can go away)
/usr/lib/testserver/modules/handlers/sos_usb.so.0.0.0 (testserver package not required, this can go away)
/usr/lib/hal/hald-addon-als (open source as part of hal package)
/usr/lib/hal/hald-addon-cpufreq (open source as part of hal package)
/usr/lib/hal/hald-addon-ipw-killswitch (open source as part of hal package)
/usr/lib/hal/hald-addon-usb-cable (open source as part of hal package)
/usr/lib/mce/modules/libaccelerometer.so (open source as part of cloned mce package)
/usr/lib/mce/modules/libcamera.so (open source as part of cloned mce package)
/usr/lib/mce/modules/libdisplay.so (open source as part of cloned mce package)
/usr/lib/mce/modules/libfilter-brightness-als.so (open source as part of cloned mce package)
/usr/lib/mce/modules/libkeypad.so (open source as part of cloned mce package)
/usr/lib/mce/modules/libled.so (open source as part of cloned mce package)
/usr/lib/mce/modules/libvibrator.so (open source as part of cloned mce package)
/usr/lib/dsme/libstate.so.0.0.0 (open source as part of dsme package)
/usr/lib/microb-engine/libfreebl3.so (open source as part of libnss3 package)
/usr/lib/microb-engine/libxul.so (open source as part of microb-engine package)
/usr/lib/microb-engine/components/libatlas.so (part of nokia-maps-core package, uses /sys/class/i2c-adapter/i2c-3/3-001d/coord)
/usr/lib/pulse-0.9.15/modules/libalsa-util.so (open source as part of pulseaudio package)
/usr/lib/pulse-0.9.15/modules/module-nokia-voice.so (part of module-nokia-voice package, uses /sys/devices/platform/omap-mcbsp.2/st_ch0gain, /sys/devices/platform/omap-mcbsp.2/st_ch1gain, /sys/devices/platform/omap-mcbsp.2/st_enable, /sys/devices/platform/omap-mcbsp.2/st_taps and /sys/power/vdd2_lock)
/usr/lib/xorg/modules/linux/libfbdevhw.so (open source as part of xserver-xorg-core package)
/usr/lib/libcameraalg.so (part of libipp-nokia package, uses /sys/bin/CameraAlgProc)
/usr/lib/liboil-0.3.so.0.3.0 (open source as part of liboil0.3 package)
/usr/lib/libosso.so.1.3.0 (open source as part of libosso1 package)
/usr/lib/libpciaccess.so.0.10.2 (open source as part of libpciaccess0 package)
/usr/libexec/n900-fmrx-enabler (open source as part of n900-fmrx-enabler package)
/usr/sbin/bluetoothd (open source as part of bluez package)
/usr/sbin/bme_rx-51 (BME has been replaced, will go away)
/usr/sbin/fmtxd (open source as part of cloned fmtx-middleware package)
/usr/sbin/hald (open source as part of hal package)
/usr/sbin/hulda (open source as part of ke-recv-extra package)
/usr/sbin/icd2 (from icd2 package, uses /sys/class/net/%s/idletimer
/usr/sbin/osso-usb-mass-storage-disable.sh (open source as part of ke-recv package)
/usr/sbin/osso-usb-mass-storage-enable.sh (open source as part of ke-recv package)
/usr/sbin/osso-usb-mass-storage-is-used.sh (open source as part of ke-recv package)
/usr/sbin/softupd (softupd package not required, this can go away)
/usr/sbin/sscd (ssc-daemon package will need to be replaced, will go away)
/usr/sbin/wlancond (open source as part of osso-wlan package)
/usr/share/policy/rules/rx51/policy.dresc (from policy-settings-rx51 package, uses /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq and /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

So to distil this information a bit further, the following closed binaries use files under /sys:
/usr/bin/rtcom-messaging-ui.launch
/usr/lib/microb-engine/components/libatlas.so
/usr/lib/pulse-0.9.15/modules/module-nokia-voice.so
/usr/lib/libcameraalg.so
/usr/sbin/icd2
/usr/share/policy/rules/rx51/policy.dresc

And they use the following /sys files
/sys/kernel/low_watermark
/sys/class/i2c-adapter/i2c-3/3-001d/coord
/sys/devices/platform/omap-mcbsp.2/st_ch0gain
/sys/devices/platform/omap-mcbsp.2/st_ch1gain
/sys/devices/platform/omap-mcbsp.2/st_enable
/sys/devices/platform/omap-mcbsp.2/st_taps
/sys/power/vdd2_lock
/sys/bin/CameraAlgProc
/sys/class/net/%s/idletimer
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

No idea if any of the above files are changing in the new kernels and if so, how. Or what the correct fix is to make them keep working (modifying the kernel, kernel module, patching the binary, symlink, LD_PRELOAD or what). None of the binaries on the list look to be particularly easy to clone.

Coming up next, I will be repeating the exercise but for users of /proc and /dev
 

The Following 18 Users Say Thank You to jonwil For This Useful Post: