青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Alex

Faith First

常用鏈接

統計

資料

最新評論

自定義linux內核調試print

調試信息過多造成dmesg無法完全顯示怎么辦?

 

#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif

#if defined(MODVERSIONS) && !defined(__GENKSYMS__)
#include
#endif

#ifdef DBGPRT_OUTVER
#include "dbgprint.ver" /* redefine "dbgprint" to include CRC */
#endif

#ifndef EXPORT_SYMTAB
#define EXPORT_SYMTAB
#endif

#include
#include
#include
#include
#include
//#include
#include
#include

#include "dbgprint.h"

EXPORT_SYMBOL(DbgPrint);

#ifndef DBGPRT_VER
#define DBGPRT_VER "0.90"
#endif

int dbgprt_major=65; //the major device number
char dbgprt_dev_name[]={"ALIDbg"}; //the name in /dev
char dbgprt_ver[]={DBGPRT_VER};
//module paramaters and infos
MODULE_AUTHOR("ALI_SHA");
MODULE_DESCRIPTION("Ali M3321 DEBUGER PRINT.");

MODULE_PARM(dbgprt_ver,"s");
MODULE_PARM_DESC(dbgprt_ver,DBGPRT_VER);

MODULE_PARM(dbgprt_major,"i");
MODULE_PARM_DESC(dbgprt_major,"65");

MODULE_PARM(dbgprt_dev_name,"s");
MODULE_PARM_DESC(dbgprt_dev_name,"ALIDbg");

 

wait_queue_head_t pSleep;

//used to manager the buffer
char chrgMessage[4096]; //the last 1024 don't use for overflow
char* pchEnd;
char* pchStart;
char fTurn; //pchEnd littl than pchStart
char* pchMessageEnd; //the end pointer of array
int nOverLen;

 

struct file_operations ALIDbgOps =
{
THIS_MODULE,
NULL,
DbgRead,
NULL, //ali_write,
NULL,
NULL,
DbgIoCtl,
NULL,
DbgOpen,
NULL,
DbgClose,
NULL,
NULL,
NULL,
NULL,
NULL
};

int init_module(void)
{
int nResult;

nResult = register_chrdev(dbgprt_major,dbgprt_dev_name,&ALIDbgOps);
if(nResult<0)
{
printk("can't register this device!\n");
return -1;
}

pchStart=chrgMessage;
pchEnd=chrgMessage;
pchMessageEnd=chrgMessage+3072;
fTurn=0;

init_waitqueue_head(&pSleep);
return 0;

}

int cleanup_module()
{
unregister_chrdev(dbgprt_major,dbgprt_dev_name);
return 0;
}


int DbgOpen(struct inode* i,struct file *f)
{
MOD_INC_USE_COUNT;
return 0;
}

int DbgClose(struct inode* i,struct file *f)
{
wake_up_interruptible(&pSleep);
MOD_DEC_USE_COUNT;
return 0;
}

ssize_t DbgRead (struct file* fileDbg, char* pchMsg, size_t nLen, loff_t* pOff)
{
int nMsgLen;

if(!fTurn && (pchStart==pchEnd) )
{
interruptible_sleep_on(&pSleep);
}

if(!fTurn)
{
nMsgLen=pchEnd-pchStart;
if(nLen {
copy_to_user(pchMsg,pchStart,nLen);
pchStart+=nLen;
return nLen;
}
copy_to_user(pchMsg,pchStart,nMsgLen);
}
else
{
if(nLen {
copy_to_user(pchMsg,pchStart,nLen);
pchStart+=nLen;
return nLen;
}

copy_to_user(pchMsg,pchStart,nOverLen);
fTurn=0;

nMsgLen=pchEnd-chrgMessage;
if( (nLen-nOverLen) {
copy_to_user(pchMsg+nOverLen,chrgMessage,nLen-nOverLen);
pchStart=chrgMessage+nLen-nOverLen;
return nLen;
}
copy_to_user(pchMsg+nOverLen,chrgMessage,nMsgLen);
nMsgLen+=nOverLen;
}

pchStart=chrgMessage;
pchEnd=chrgMessage;

return nMsgLen;
}

int DbgIoCtl(struct inode* i,struct file *f,unsigned int cmd,unsigned long arg)
{
switch(cmd)
{
case DBGPRT_IO_CANCLE:
wake_up_interruptible(&pSleep);
break;

default:
return -1;
}

return 0;
}

int DbgPrint(const char *fmt, ...)
{
va_list args;
int nMessageLen;

va_start(args, fmt);
nMessageLen=vsprintf(pchEnd,fmt,args);
va_end(args);

pchEnd+=nMessageLen;

if(pchEnd>=pchMessageEnd)
//the message overflowed
{
nOverLen=pchEnd-pchMessageEnd;
pchEnd=chrgMessage;
fTurn=1;
}
else
{
//the end pointer exceed the start pointor from back
if(fTurn && (pchEnd>pchStart))
{
pchStart=pchEnd;
*pchStart=255; //add a alarmer
}
}

wake_up_interruptible(&pSleep);

return nMessageLen;
}

我所說的版本問題已經解決了.
可以用ioctl來cancle掉被掛起的read.



#ifndef _DBGPRT_H_
#define _DBGPRT_H_

#define DBGPRT_IO_CANCLE 1

int DbgOpen(struct inode* i,struct file *f);
int DbgClose(struct inode* i,struct file *f);
ssize_t DbgRead (struct file* fileDbg, char* pchMsg, size_t nLen, loff_t* pOff);
int DbgIoCtl(struct inode* i,struct file *f,unsigned int cmd,unsigned long arg);
int DbgPrint(const char *fmt, ...);

#endif//_DBGPRT_H_

posted on 2009-12-30 14:06 alexhappy 閱讀(345) 評論(0)  編輯 收藏 引用 所屬分類: 調試技巧

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美电影免费| 亚洲国产日本| 韩日欧美一区二区三区| 国产精品久久久久久久久免费樱桃| 国产区亚洲区欧美区| 国产精品免费看| 欧美三级视频在线| 国产精品―色哟哟| 国产一区二区三区四区三区四 | 性欧美大战久久久久久久免费观看| 亚洲综合精品一区二区| 欧美一区二区日韩| 美腿丝袜亚洲色图| 欧美粗暴jizz性欧美20| 麻豆成人91精品二区三区| 免费试看一区| 99精品热视频| 欧美一区二区视频免费观看| 久久亚洲欧洲| 国产精品国产三级国产普通话三级| 国产一区二区按摩在线观看| 亚洲精品中文在线| 久久超碰97人人做人人爱| 欧美国产亚洲视频| 亚洲欧美激情四射在线日| 久久综合色播五月| 国产精品国内视频| 亚洲激情av在线| 久久aⅴ国产欧美74aaa| 亚洲人成久久| 久久9热精品视频| 欧美日韩一区视频| **欧美日韩vr在线| 欧美伊久线香蕉线新在线| 在线观看欧美成人| 亚洲免费在线看| 亚洲国产婷婷综合在线精品| 亚洲欧美日韩国产中文| 欧美激情偷拍| 在线日本成人| 久久久久久夜精品精品免费| 一区二区三区视频在线观看| 欧美成人免费小视频| 国产综合一区二区| 亚洲欧美综合| 一区二区毛片| 欧美日韩亚洲精品内裤| 99精品国产高清一区二区| 蜜臀91精品一区二区三区| 亚洲男人影院| 国产精品日韩欧美| 亚洲一区国产视频| 亚洲区国产区| 欧美日韩美女一区二区| 亚洲欧洲在线看| 欧美高清视频一区二区三区在线观看| 欧美在线免费看| 国产一区二区三区网站 | 在线观看欧美亚洲| 久久九九国产精品怡红院| 亚洲欧美综合| 国产日韩欧美在线播放不卡| 亚洲欧美另类在线| 中文高清一区| 国产精品久久久久av| 亚洲欧美电影在线观看| 一区二区三区色| 国产精品久久久久久av下载红粉 | 亚洲免费综合| 国产日韩欧美综合在线| 久久九九久精品国产免费直播| 午夜天堂精品久久久久 | 欧美日韩一区二区三区在线观看免| 亚洲精品美女| 男女精品网站| 欧美成人久久| 在线亚洲成人| 亚洲香蕉伊综合在人在线视看| 国产精品久久久91| 久久久久九九九九| 免费视频久久| 一区二区三区鲁丝不卡| 亚洲免费网站| 亚洲丁香婷深爱综合| 91久久综合| 小辣椒精品导航| 国产一区二区丝袜高跟鞋图片| 免费亚洲电影在线观看| 欧美日韩精品欧美日韩精品| 午夜欧美大片免费观看| 久久人人97超碰精品888| 999亚洲国产精| 午夜精品久久| 亚洲精品视频在线播放| 亚洲一区日韩| 亚洲人成啪啪网站| 亚洲影视综合| 亚洲另类自拍| 久久不射电影网| 一本久道综合久久精品| 午夜精品国产更新| 一本色道久久综合亚洲精品婷婷| 欧美亚洲综合在线| aa日韩免费精品视频一| 欧美伊人久久久久久久久影院 | 午夜精品久久久久久久99水蜜桃 | 久久精品亚洲一区| 99av国产精品欲麻豆| 欧美在线观看一区| 亚洲一区二区免费视频| 久久免费精品视频| 亚洲综合第一| 欧美高清不卡| 久久久久久日产精品| 欧美日韩在线综合| 亚洲黄色免费| 伊人成人在线视频| 午夜激情综合网| 亚洲欧美成人网| 欧美精品v国产精品v日韩精品| 久久久久久9| 国产视频亚洲精品| 一区二区三区国产在线观看| 99国产麻豆精品| 免费在线观看一区二区| 久久久噜噜噜久久久| 国产欧美在线观看| 小处雏高清一区二区三区| 午夜欧美不卡精品aaaaa| 欧美日韩一二三四五区| 亚洲三级视频在线观看| 最新成人av在线| 美女精品视频一区| 女同性一区二区三区人了人一| 国产亚洲欧美一区二区三区| 午夜精品999| 久久亚洲免费| 亚洲国产第一页| 麻豆成人av| 亚洲激情午夜| 一区二区三欧美| 最新国产成人av网站网址麻豆| **性色生活片久久毛片| 欧美在线1区| 久久综合婷婷| 亚洲国内欧美| 欧美成人国产va精品日本一级| 欧美成人在线免费观看| 亚洲人成绝费网站色www| 欧美精品系列| 伊人婷婷久久| 麻豆精品视频在线| 在线播放中文一区| 欧美成人亚洲成人| 99re6这里只有精品视频在线观看| 亚洲婷婷国产精品电影人久久| 欧美午夜精品久久久| 欧美亚洲综合另类| 欧美激情欧美激情在线五月| 一本久久青青| 国产欧美日韩亚洲一区二区三区| 欧美一区二区视频在线观看| 欧美a级在线| 亚洲深爱激情| 国产综合香蕉五月婷在线| 欧美激情一区二区三区高清视频 | 暖暖成人免费视频| 日韩视频国产视频| 国产精品视频在线观看| 久久久久亚洲综合| 亚洲精品老司机| 久久精品成人一区二区三区| 亚洲第一天堂av| 国产精品国产成人国产三级| 久久精品噜噜噜成人av农村| 亚洲日本欧美天堂| 久久九九有精品国产23| 亚洲精品黄色| 国内欧美视频一区二区| 欧美日本网站| 久久这里只有| 亚洲欧美日韩国产综合精品二区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲人永久免费| 国产欧美日韩一区二区三区| 欧美精品福利在线| 久久精品99国产精品| 999在线观看精品免费不卡网站| 久久天堂国产精品| 亚洲欧美日韩区| 亚洲精品字幕| 一区在线视频| 国产日本欧美视频| 欧美午夜精品久久久| 欧美黑人在线观看| 久久美女性网| 久久国产精品72免费观看| 一区二区三区视频免费在线观看| 亚洲国产精品日韩| 免费视频一区|