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

Alex

Faith First

常用鏈接

統(tǒng)計

資料

最新評論

自定義linux內(nèi)核調(diào)試print

調(diào)試信息過多造成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;
}

我所說的版本問題已經(jīng)解決了.
可以用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)  編輯 收藏 引用 所屬分類: 調(diào)試技巧

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久精品三级| 欧美在线日韩| 国产精品毛片va一区二区三区| 久久精品一区二区三区不卡牛牛| 欧美影片第一页| 久久久久久69| 欧美freesex交免费视频| 欧美激情日韩| 欧美午夜精彩| 国产一区二区黄| 在线观看精品| 亚洲视频一区| 久久久久久网| 亚洲精品一区二区三区四区高清| 一区二区三区日韩精品| 午夜精彩国产免费不卡不顿大片| 久久久精品五月天| 欧美日韩影院| 在线观看视频免费一区二区三区| 亚洲六月丁香色婷婷综合久久| 亚洲自拍偷拍一区| 美女网站久久| 亚洲一区在线看| 你懂的成人av| 国产一区二区电影在线观看| 99综合视频| 玖玖国产精品视频| 亚洲天堂av在线免费| 麻豆精品网站| 国产精品夜夜嗨| 91久久综合亚洲鲁鲁五月天| 午夜欧美精品| 亚洲美女视频在线观看| 久久久91精品国产| 91久久国产精品91久久性色| 亚洲人成在线观看网站高清| 欧美在线网址| 国产精品久久久久一区| 亚洲人成久久| 久久久久久久激情视频| 在线视频欧美一区| 欧美黄色一级视频| 亚洲电影在线观看| 久久国产精品久久w女人spa| 日韩视频在线观看国产| 免费看黄裸体一级大秀欧美| 国产一二三精品| 欧美一区二区高清| 亚洲一区二区黄| 欧美视频在线观看免费| 日韩视频永久免费观看| 蜜乳av另类精品一区二区| 亚洲综合欧美日韩| 国产精品久久久免费| 亚洲特级毛片| av72成人在线| 欧美三级资源在线| 亚洲视频在线播放| 中文欧美日韩| 国产精品永久免费| 欧美在线日韩| 亚洲精品美女| 亚洲成人在线网| 毛片一区二区| 亚洲精品四区| 亚洲精品国产精品乱码不99按摩| 欧美aⅴ一区二区三区视频| 最近中文字幕mv在线一区二区三区四区| 狂野欧美激情性xxxx欧美| 欧美一区成人| 在线观看欧美精品| 亚洲国产精品日韩| 欧美国产免费| 亚洲欧美在线网| 欧美在线播放一区| 亚洲第一页在线| 亚洲激情午夜| 国产精品久久久久久久7电影 | 久久精品国产成人| 一区二区在线视频| 欧美激情欧美激情在线五月| 欧美大片91| 亚洲一区二区三区乱码aⅴ| 亚洲午夜精品久久| 狠狠久久五月精品中文字幕| 欧美大片在线看| 欧美日韩在线影院| 午夜久久久久久久久久一区二区| 亚洲欧美在线播放| 亚洲国产婷婷综合在线精品 | 欧美一级午夜免费电影| 午夜老司机精品| **性色生活片久久毛片| 亚洲精品一级| 国产一区91| 亚洲精品视频在线| 国产日韩精品久久| 亚洲人精品午夜在线观看| 欧美午夜大胆人体| 亚洲成色www久久网站| 国产精品qvod| 欧美1区2区视频| 国产精品地址| 欧美激情精品久久久久久蜜臀 | 在线观看91精品国产麻豆| 91久久久久久| 国产亚洲综合精品| 亚洲久久一区| ●精品国产综合乱码久久久久| 亚洲视频一区二区在线观看 | 噜噜噜在线观看免费视频日韩| 欧美极品在线观看| 久久性色av| 国产精品白丝jk黑袜喷水| 久久综合久久综合久久综合| 欧美性久久久| 亚洲人成绝费网站色www| 国产主播精品在线| 一本色道久久88综合亚洲精品ⅰ| 在线免费观看日韩欧美| 欧美一二三区精品| 午夜一区二区三区不卡视频| 欧美精品观看| 亚洲国产成人在线播放| 亚洲福利视频网站| 久久久免费精品| 久久婷婷综合激情| 国产中文一区二区三区| 亚洲欧美国产视频| 亚洲欧美一区二区三区久久| 欧美精品久久久久久久久老牛影院 | 久久久免费观看视频| 久久国产精品黑丝| 国产日韩欧美另类| 亚洲一区二区欧美| 亚洲一区二区三区午夜| 欧美日韩精品免费在线观看视频| 亚洲国产精品久久久| 亚洲国产第一| 欧美成人按摩| 亚洲国产专区| 亚洲少妇在线| 国产精品爱啪在线线免费观看| 91久久久久久久久| 亚洲一区二区欧美日韩| 国产精品久久久久久久久动漫| 中文网丁香综合网| 久久国产一区| 亚洲日韩欧美视频| 欧美黄色精品| 亚洲成人中文| 亚洲国产va精品久久久不卡综合| 久久婷婷国产综合国色天香| 久久久久九九九| 久久国产精品色婷婷| 一区二区三区成人精品| 久久深夜福利| 免费亚洲网站| 99精品国产99久久久久久福利| 欧美 日韩 国产在线| 最近看过的日韩成人| 亚洲每日在线| 欧美视频在线免费| 性久久久久久久久久久久| 久久一区二区精品| 日韩视频在线免费观看| 国产精品亚洲网站| 久久久无码精品亚洲日韩按摩| 亚洲国产欧美一区二区三区丁香婷| 99re这里只有精品6| 国产精品色一区二区三区| 欧美亚洲日本网站| 亚洲大片精品永久免费| 夜夜嗨av一区二区三区中文字幕| 欧美深夜福利| 久久午夜激情| 亚洲欧美日韩综合aⅴ视频| 免费看亚洲片| 亚洲欧美国产日韩中文字幕| 国产综合香蕉五月婷在线| 欧美激情综合五月色丁香| 亚洲天堂激情| 亚洲黄色在线观看| 久久精品中文字幕免费mv| 亚洲美女av电影| 狠狠色丁香久久婷婷综合_中| 欧美黄色小视频| 久久久免费av| 亚洲男同1069视频| 亚洲成在线观看| 久久久久91| 亚洲一区视频在线| 亚洲激情成人| 国产一区二区三区直播精品电影| 欧美大片免费观看| 久久国产福利| 午夜欧美理论片| 亚洲一级免费视频| 亚洲裸体俱乐部裸体舞表演av| 美乳少妇欧美精品|