資源簡介
LDD3的源碼,由于其他人的資源要下載積分,發揚開源精神,下載并0積分分享~

代碼片段和文件信息
/*
?*?A?virtual?bus?for?LDD?sample?code?devices?to?plug?into.??This
?*?code?is?heavily?borrowed?from?drivers/base/sys.c
?*
?*?Copyright?(C)?2001?Alessandro?Rubini?and?Jonathan?Corbet
?*?Copyright?(C)?2001?O‘Reilly?&?Associates
?*
?*?The?source?code?in?this?file?can?be?freely?used?adapted
?*?and?redistributed?in?source?or?binary?form?so?long?as?an
?*?acknowledgment?appears?in?derived?source?files.??The?citation
?*?should?list?that?the?code?comes?from?the?book?“Linux?Device
?*?Drivers“?by?Alessandro?Rubini?and?Jonathan?Corbet?published
?*?by?O‘Reilly?&?Associates.???No?warranty?is?attached;
?*?we?cannot?take?responsibility?for?errors?or?fitness?for?use.
?*
?*/
/*?$Id:?lddbus.cv?1.9?2004/09/26?08:12:27?gregkh?Exp?$?*/
#include?
#include?
#include?
#include?
#include?
#include?“lddbus.h“
MODULE_AUTHOR(“Jonathan?Corbet“);
MODULE_LICENSE(“Dual?BSD/GPL“);
static?char?*Version?=?“$Revision:?1.9?$“;
/*
?*?Respond?to?hotplug?events.
?*/
static?int?ldd_hotplug(struct?device?*dev?char?**envp?int?num_envp
char?*buffer?int?buffer_size)
{
envp[0]?=?buffer;
if?(snprintf(buffer?buffer_size?“LDDBUS_VERSION=%s“
????Version)?>=?buffer_size)
return?-ENOMEM;
envp[1]?=?NULL;
return?0;
}
/*
?*?Match?LDD?devices?to?drivers.??Just?do?a?simple?name?test.
?*/
static?int?ldd_match(struct?device?*dev?struct?device_driver?*driver)
{
return?!strncmp(dev->bus_id?driver->name?strlen(driver->name));
}
/*
?*?The?LDD?bus?device.
?*/
static?void?ldd_bus_release(struct?device?*dev)
{
printk(KERN_DEBUG?“lddbus?release\n“);
}
struct?device?ldd_bus?=?{
.bus_id???=?“ldd0“
.release??=?ldd_bus_release
};
/*
?*?And?the?bus?type.
?*/
struct?bus_type?ldd_bus_type?=?{
.name?=?“ldd“
.match?=?ldd_match
.hotplug??=?ldd_hotplug
};
/*
?*?Export?a?simple?attribute.
?*/
static?ssize_t?show_bus_version(struct?bus_type?*bus?char?*buf)
{
return?snprintf(buf?PAGE_SIZE?“%s\n“?Version);
}
static?BUS_ATTR(version?S_IRUGO?show_bus_version?NULL);
/*
?*?LDD?devices.
?*/
/*
?*?For?now?no?references?to?LDDbus?devices?go?out?which?are?not
?*?tracked?via?the?module?reference?count?so?we?use?a?no-op
?*?release?function.
?*/
static?void?ldd_dev_release(struct?device?*dev)
{?}
int?register_ldd_device(struct?ldd_device?*ldddev)
{
ldddev->dev.bus?=?&ldd_bus_type;
ldddev->dev.parent?=?&ldd_bus;
ldddev->dev.release?=?ldd_dev_release;
strncpy(ldddev->dev.bus_id?ldddev->name?BUS_ID_SIZE);
return?device_register(&ldddev->dev);
}
EXPORT_SYMBOL(register_ldd_device);
void?unregister_ldd_device(struct?ldd_device?*ldddev)
{
device_unregister(&ldddev->dev);
}
EXPORT_SYMBOL(unregister_ldd_device);
/*
?*?Crude?driver?interface.
?*/
static?ssize_t?show_version(struct?device_driver?*driver?char?*buf)
{
struct?ldd_driver?*ldriver?=?to_ldd_driver(driver);
sprintf(buf?“%s\n“?ldriver->version);
return?strlen(buf);
}
int?register_ldd_driver(struct?ldd_driver?*driver)
{
int?ret
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????855??2005-02-01?04:31??ldd3_examples\include\lddbus.h
?????文件???????4058??2005-02-01?04:31??ldd3_examples\lddbus\lddbus.c
?????文件????????710??2005-02-01?04:31??ldd3_examples\lddbus\Makefile
?????文件???????1091??2005-02-01?04:31??ldd3_examples\LICENSE
?????文件????????289??2005-02-01?04:31??ldd3_examples\Makefile
?????文件???????2128??2005-02-01?04:31??ldd3_examples\misc-modules\complete.c
?????文件???????2000??2005-02-01?04:31??ldd3_examples\misc-modules\faulty.c
?????文件????????463??2005-02-01?04:31??ldd3_examples\misc-modules\hello.c
?????文件???????1130??2005-02-01?04:31??ldd3_examples\misc-modules\hellop.c
?????文件???????6194??2005-02-01?04:31??ldd3_examples\misc-modules\jiq.c
?????文件???????7571??2005-02-01?04:31??ldd3_examples\misc-modules\jit.c
?????文件???????2293??2005-02-01?04:31??ldd3_examples\misc-modules\kdataalign.c
?????文件???????1489??2005-02-01?04:31??ldd3_examples\misc-modules\kdatasize.c
?????文件????????987??2005-02-01?04:31??ldd3_examples\misc-modules\Makefile
?????文件???????2044??2005-02-01?04:31??ldd3_examples\misc-modules\seq.c
?????文件???????6200??2005-02-01?04:31??ldd3_examples\misc-modules\silly.c
?????文件???????2161??2005-02-01?04:31??ldd3_examples\misc-modules\sleepy.c
?????文件???????1483??2005-02-01?04:31??ldd3_examples\misc-progs\asynctest.c
?????文件???????2088??2005-02-01?04:31??ldd3_examples\misc-progs\dataalign.c
?????文件???????1287??2005-02-01?04:31??ldd3_examples\misc-progs\datasize.c
?????文件????????417??2005-02-01?04:31??ldd3_examples\misc-progs\gdbline
?????文件???????3372??2005-02-01?04:31??ldd3_examples\misc-progs\inp.c
?????文件????????925??2005-02-01?04:31??ldd3_examples\misc-progs\load50.c
?????文件????????297??2005-02-01?04:31??ldd3_examples\misc-progs\Makefile
?????文件???????1975??2005-02-01?04:31??ldd3_examples\misc-progs\mapcmp.c
?????文件???????2170??2005-02-01?04:31??ldd3_examples\misc-progs\mapper.c
?????文件???????1186??2005-02-01?04:31??ldd3_examples\misc-progs\nbtest.c
?????文件???????2286??2005-02-01?04:31??ldd3_examples\misc-progs\netifdebug.c
?????文件???????3593??2005-02-01?04:31??ldd3_examples\misc-progs\outp.c
?????文件???????1218??2005-02-01?04:31??ldd3_examples\misc-progs\polltest.c
............此處省略89個文件信息
- 上一篇:基于FPGA的AES加密算法的高速實現
- 下一篇:51STC單片機開發板驅動
評論
共有 條評論