1.核心端
struct device *dev = null;
char * s_c[2];
static ssize_t send( struct device *dev, struct device_attribute *attr, const char *buf, size_t count )
static device_attr(s, s_irugo|s_iwusr, null, send);
static const struct attribute *song_event_attr = ;
static const struct attribute_group song_event_attr_group = ;
static struct class song_event_class = ;
static int __init song_uevent_init( void )
dev = device_create(&song_event_class, null, mkdev(0, 0), null, "song_event");
if( dev )
}else
return 0;
}載入此模組將建立 /sys/devices/virtual/song_event/song_event
如何使用呢?就是怎麼讓核心傳送訊息出來?
echo 123 > s
對此檔案進行寫操作 即可傳送制定訊息
直接看如下**:
#include
#include
#include
#include
#include
#include
#include
#define uevent_msg_len 2048
#define user_cooling_dev "/devices/virtual/thermal/cooling_device0"
struct cooling_device ;
static int open_uevent_socket(void);
static void parse_uevent(const char *msg, struct cooling_device *cdev);
int main_uevent( int argc __unused, char **ar** __unused )
} while(1);
}static int open_uevent_socket(void)
setsockopt(s, sol_socket, so_rcvbufforce, &sz, sizeof(sz));
if (bind(s, (struct sockaddr *) &addr, sizeof(addr)) < 0)
return s;
}static void parse_uevent(const char *msg, struct cooling_device *cdev)
else if (!strncmp(msg, "action=", 7)) else if (!strncmp(msg, "devpath=", 8)) else if (!strncmp(msg, "state=", 6)) else if (!strncmp(msg, "temp=", 5))
while(*msg++);
}debug_msg("event \n",
cdev->name, cdev->action, cdev->path, cdev->state, cdev->temp);
if(!strncmp(cdev->path, user_cooling_dev, sizeof(user_cooling_dev)) && !strncmp(cdev->action, "change", 5))
debug_msg("event \n",
cdev->name, cdev->action, cdev->path, cdev->state, cdev->temp);
}void *socket_uevent_test(void *arg)
return 0;
}ok,搞定!
uevent 驅動 uevent分析
1 kobject,ktype,kset kobject代表sysfs中的目錄。ktype代表kobject的型別,主要包含release函式和attr的讀寫函式。比如,所有的bus都有同乙個bus type 所有的class都有同乙個class type。kset包含了subsystem概念,ks...
安卓系統之uevent 機制
uevnet 介紹 uevent是android核心空間與使用者空間進行通訊的一種方式,其本質是通過netlink 通過socket 傳送訊息給使用者程序,使用場景 熱插拔 一uevent 程序的啟動流程 1.system core init init.cpp main if strcmp base...
Linux裝置模型分析之(五) uevent
linux裝置模型分析之 一 裝置模型核心 linux裝置模型分析之 二 裝置模型的基石 linux裝置模型分析之 三 sysfs linux裝置模型分析之 四 class linux裝置模型分析之 五 uevent uevent是kobject的一部分,用於在kobject狀態發生改變時,例如增加...