See these for netlink usage (from userspace) to facilitate communication
with kernel:

http://www.netmite.com/android/mydroid/external/bluez/utils/plugins/netlink.c
http://blog.csdn.net/m346759541/archive/2011/01/12/6131220.aspx

And this is the kernel component:

http://www.netmite.com/android/mydroid/kernel/net/tipc/netlink.c

And searching on my android git download:

./system/core/libsysutils/src/NetlinkEvent.cpp:
#define LOG_TAG "NetlinkEvent"
#include <sysutils/NetlinkEvent.h>
const int NetlinkEvent::NlActionUnknown = 0;
const int NetlinkEvent::NlActionAdd = 1;
const int NetlinkEvent::NlActionRemove = 2;
const int NetlinkEvent::NlActionChange = 3;
NetlinkEvent::NetlinkEvent() {
NetlinkEvent::~NetlinkEvent() {
void NetlinkEvent::dump() {
bool NetlinkEvent::decode(char *buffer, int size) {
const char *NetlinkEvent::findParam(const char *paramName) {
    SLOGE("NetlinkEvent::FindParam(): Parameter '%s' not found", paramName);

./system/core/libsysutils/src/NetlinkListener.cpp:
#include <sysutils/NetlinkEvent.h>
    NetlinkEvent *evt = new NetlinkEvent();
        SLOGE("Error decoding NetlinkEvent");

./system/vold/DirectVolume.cpp:
#include <sysutils/NetlinkEvent.h>
int DirectVolume::handleBlockEvent(NetlinkEvent *evt) {
            if (action == NetlinkEvent::NlActionAdd) {
            } else if (action == NetlinkEvent::NlActionRemove) {
            } else if (action == NetlinkEvent::NlActionChange) {
void DirectVolume::handleDiskAdded(const char *devpath, NetlinkEvent *evt) {
void DirectVolume::handlePartitionAdded(const char *devpath, NetlinkEvent
*evt) {
void DirectVolume::handleDiskChanged(const char *devpath, NetlinkEvent *evt)
{
void DirectVolume::handlePartitionChanged(const char *devpath, NetlinkEvent
*evt) {
void DirectVolume::handleDiskRemoved(const char *devpath, NetlinkEvent *evt)
{
void DirectVolume::handlePartitionRemoved(const char *devpath, NetlinkEvent
*evt) {

./system/vold/NetlinkHandler.cpp:
#include <sysutils/NetlinkEvent.h>
void NetlinkHandler::onEvent(NetlinkEvent *evt) {

./system/vold/Volume.cpp:
int Volume::handleBlockEvent(NetlinkEvent *evt) {

./system/vold/VolumeManager.cpp:
#include <sysutils/NetlinkEvent.h>
void VolumeManager::handleSwitchEvent(NetlinkEvent *evt) {
void VolumeManager::handleUsbCompositeEvent(NetlinkEvent *evt) {
void VolumeManager::handleBlockEvent(NetlinkEvent *evt) {

./system/netd/NetlinkHandler.cpp:
#include <sysutils/NetlinkEvent.h>
void NetlinkHandler::onEvent(NetlinkEvent *evt) {

Perhaps these can be your examples?

On Sat, Jun 18, 2011 at 1:27 AM, Pavan Savoy <pavan.sa...@gmail.com> wrote:

> On Fri, Jun 17, 2011 at 9:13 AM, fan zhang <fzhang...@gmail.com> wrote:
> > We developed an Android service and a kernel module.  Android service
> > and the Kernel module need to exchange data with each other.
> >
> >
> > Following are the requirements for the IPC between user space and
> > Kernel.
> >
> > 1. The communication should be secure. No authorized apps could not
> > talk to that Kernel module.
> >
> > 2.  IPC should have minimal impact to the Kernel operation (scheduling
> > etc)
> >
> > 3. The communication should be duplex.
> >
> > Please give me some suggestions to setup that IPC.
>
> I've always liked netlink, However the genetlink library is kind of
> missing from Android.
> But it does suffice to all your requirements.
>
>
> > Thanks
> >
> > Fan
> >
> > --
> > unsubscribe: android-kernel+unsubscr...@googlegroups.com
> > website: http://groups.google.com/group/android-kernel
>
>
>
> --
> --Pavan Savoy
>
> --
> unsubscribe: android-kernel+unsubscr...@googlegroups.com
> website: http://groups.google.com/group/android-kernel
>



-- 
Regards,
Peter Teoh

-- 
unsubscribe: android-kernel+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-kernel

Reply via email to