Linux?豸??????????豸????
???????????? ???????[ 2016/5/5 11:17:34 ] ?????????????? Linux
????3.3 ?ж???????
/*???????ж???ж????????????*/
static int request irqs(void)
{
struct key info *k;
int i;
for (i= 0; i < sizeof(key info tab) / sizeof(key info tab [1]); i++)
{
k = key info tab + i;
set external irq (k->irq no?? EXT LOWLEVEL?? GPIO PULLUP DIS);
//???????????
if (request irq (k->irq no?? &buttons irq?? SA INTERRUPT??
DEVICE NAME??
i)) //?????ж???? ?????????????????ж???????
{
return - 1;
}
}
return 0;
}
????3.4 ?ж???????
????/*????ж?*/
????static void free irqs(void)
????{
????struct key info *k;
????int i;
????for (i= 0; i < sizeof(key info tab) / sizeof(key info tab [1]); i++)
????{
????k = key info tab + i;
????free irq (k->irq no?? buttons irq); //????ж?
????}
????}
????4 ?????豸?????ж?????????????
???????????????????????ж?????ж????????У?????????ж????????????????????????ж?????????ж???????е????
????4.1 ?ж???????
????static void s3c2410 eint key (int irq?? void *dev id?? struct pt regs
????*reg)
????{
????int key = dev id;
????disable irq (key info tab [key].irq no); //???ж??????? ?
????keydev.keyStatus[key] = KEYSTATUS DOWNX;//???????
????_
????key timer [key].expires == jiffies + KEY TIMER DELAY1;//???
????add timer (&key timer[key]); //????????
????}
????4.2 ?????????????
????????????????e????????????????????????????????????μ???μ????????????б????????????????
//?????豸?????????????????
static void key timer handler (unsigned long data)
{
int key = data;
if (ISKEY DOWN (key))
{
if (keydev.keyStatus[key] == KEYSTATUS DOWNX)
//???ж????
{
keydev .keyStatus[key] = KEYSTATUS DOWN;
key timer[key].expires == jiffies + KEY TIMER DELAY; //???
keyEvent (); //??????????????????
add timer(&key timer [key]);
}
else
{
key timer[key].expires == jiffies + KEY TIMER DELAY; //???
add timer(&key timer [key]);
}
}
else //???????
{
keydev.keyStatus[key] = KEYSTATUS UP;
enable irq (key info tab [key].irq no);
}
????5 ??????????
?????????????????keydev.head??keydev.tail???а?????????????keyEvent??????????豸??????????????????£?
static int s3c2410 key open (struct inode *inode?? struct file *filp)
{
keydev .head = keydev .tail = 0; //??? ????????????
keyEvent = keyEvent raw; //?????????? ?????????keyEvent raw
return 0;
}
static int s3c2410 key release (struct inode *inode?? struct file *filp)
{
keyEvent = keyEvent dummy; //??????????????
return 0??
}
????6 ??????
???????????????????????豸???建??????????????????????keydev.head != keydev.tail??????????????????????copy_to_user()??????????????????????????????????????????????????????????????
????????????????а??????棬??????- EAGAIN??
??????????????keydev.wq?????????????????а?????? ???????????????
//?????豸???????????
static ssize t s3c2410 key read (struct file *filp??char *buf??ssize tcount?? loff t*ppos)
{
retry: if (keydev.head != keydev .tail)
//??????????????????
{
key ret = keyRead (); //???????
copy to user(..); //?????????????????????
}
else
{
if (filp->f flags &O NONBLOCK)
//????????÷???????????
{
return - EAGAIN;
}
interruptible sleep on (&(keydev .wq));
//???????????????????????ú???????????
goto retry;
}
return 0;
}
???????????????????????漰???????????????????SPASVOС??(021-61079698-8054)?????????????????????????
??????
Linux??????DDR????????????Linux?????????????????豸??????????linux???в???????????м??????????????????????????Linux????Linux??DNS????????????γ???????????Linux?????????????Linux????(???)????????Linux ????????????????????????????????Windows???У?Linux???????Linux????????????????Linux iommu??vfio???????Linux????ε???TCP???????Linux?????????????СLinux?·???????????Linux???Jexus?й?Asp.Net Core??ó???Linux?????????Щ??

???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11????????
?????????App Bug???????????????????????Jmeter?????????QC??????APP????????????????app?????е????????jenkins+testng+ant+webdriver??????????????JMeter????HTTP???????Selenium 2.0 WebDriver ??????