xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡(jiǎn)介

OK6410 linux混雜設(shè)備驅(qū)動(dòng)LED程序,使用3.0.1內(nèi)核編譯,還有驅(qū)動(dòng)源碼、Makefile和測(cè)試程序

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#include?
#include?

#include?
#include?
#include?

#include?
#include?
#include?“l(fā)ed.h“

#define?DEVICE_NAME?“LED“

static?int?led_open(struct?inode?*inodestruct?file?*filp)
{
unsigned?int?tmp;

tmp?=?readl(S3C64XX_GPMCON);
tmp?=?(tmp?&?~(0xFFFFU))?|?(0x1111U);
writel(tmpS3C64XX_GPMCON);
tmp?=?readl(S3C64XX_GPMDAT);
tmp?|=?(0xFU);
writel(tmpS3C64XX_GPMDAT);
printk(“configure?led?init\n“);

return?0;
}

static?ssize_t?led_read(struct?file?*filpchar?__user?*bufsize_t?countloff_t?*f_pos)
{
unsigned?int?tmp;

tmp?=?readl(S3C64XX_GPMDAT);
if(copy_to_user(buf&tmp1))
{
printk(“l(fā)ed?read?copy?to?user?fail\n“);
return?-EFAULT;;
}
return?0;
}

static?ssize_t?led_write(struct?file?*filpconst?char?__user?*bufsize_t?countloff_t?*f_pos)
{
char?wbuf[10]; //防止傳遞下來(lái)數(shù)據(jù)過(guò)多
unsigned?int?tmp;

copy_from_user(wbufbufcount);
wbuf[0]?=?wbuf[0]&0xFU;
tmp?=?readl(S3C64XX_GPMDAT);
tmp?=?(tmp?&?~(0xFU))?|?(~wbuf[0]);
writel(tmpS3C64XX_GPMDAT);

return?count;
}

static?int?led_release(struct?inode?*inodestruct?file?*filp)
{
printk(“#########led?module?release########\n“);
return?0;
}

static?long?led_ioctl?(struct?file?*filp?unsigned?int?cmd?unsigned?long?arg)
{
int?err?=?0;
unsigned?int?tmp?=?0;
int?count?=?0;

?/*?檢測(cè)命令的有效性?*/
???? if?(_IOC_TYPE(cmd)?!=?LED_IOC_MAGIC)?
???????? return?-EINVAL;
???? if?(_IOC_NR(cmd)?>?LED_IOC_MAXNR)?
???????? return?-EINVAL;

?/*?根據(jù)命令類型,檢測(cè)參數(shù)空間是否可以訪問(wèn)?*/
???? if?(_IOC_DIR(cmd)?&?_IOC_READ)
???????? err?=?!access_ok(VERIFY_WRITE?(void?*)arg?_IOC_SIZE(cmd));
???? else?if?(_IOC_DIR(cmd)?&?_IOC_WRITE)
???????? err?=?!access_ok(VERIFY_READ?(void?*)arg?_IOC_SIZE(cmd));
???? if?(err)?
???????? return?-EFAULT;

switch(cmd)
{
case?LED_LEFT:
for(count?=?1;count<32;)
{
if(count<16)
{
tmp?=?readl(S3C64XX_GPMDAT);
tmp?=?(tmp?&?~(0xFU))?|?(~count);
writel(tmpS3C64XX_GPMDAT);
}
else
{
tmp?=?readl(S3C64XX_GPMDAT);
tmp?=?(tmp?&?~(0xFU));
writel(tmpS3C64XX_GPMDAT);
}
msleep(200);
count?=?count?*?2;
}
break;
case?LED_RIGHT:
for(count?=?8;count!=0;)
{
tmp?=?readl(S3C64XX_GPMDAT);
tmp?=?(tmp?&?~(0xFU))?|?(~count);
writel(tmpS3C64XX_GPMDAT);
msleep(200);
count?=?count?/?2;
}
break;
case?LED_COUNT:
for(count?=?0;count<16;)
{
tmp?=?readl(S3C64XX_GPMDAT);
tmp?=?(tmp?&?~(0xFU))?|?(~count);
writel(tmpS3C64XX_GPMDAT);
msleep(200);
count++;
}
break;
default:
return?-EINVAL;
}

return?0;
}

struct?file_operations?led_fops?=?{
.owner?=?THIS_MODULE
.open?=?led_open
.wri

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????3725??2012-08-20?23:09??led\led.c

?????文件????????295??2012-08-20?22:45??led\led.h

?????文件??????76637??2012-08-20?23:09??led\led.ko

?????文件???????5985??2012-08-20?23:09??led\test

?????文件????????762??2012-08-20?23:09??led\test.c

?????目錄??????????0??2012-08-21?12:08??led

-----------?---------??----------?-----??----

????????????????87404????????????????????6


評(píng)論

共有 條評(píng)論

相關(guān)資源