锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久综合综合久久综合,亚洲а∨天堂久久精品,色偷偷91久久综合噜噜噜噜http://www.shnenglu.com/alexhappy/articles/104450.htmlalexhappyalexhappyWed, 30 Dec 2009 06:06:00 GMThttp://www.shnenglu.com/alexhappy/articles/104450.htmlhttp://www.shnenglu.com/alexhappy/comments/104450.htmlhttp://www.shnenglu.com/alexhappy/articles/104450.html#Feedback0http://www.shnenglu.com/alexhappy/comments/commentRss/104450.htmlhttp://www.shnenglu.com/alexhappy/services/trackbacks/104450.html璋冭瘯淇℃伅榪囧閫犳垚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;
}

鎴戞墍璇寸殑鐗堟湰闂宸茬粡瑙e喅浜?
鍙互鐢╥octl鏉ancle鎺夎鎸傝搗鐨剅ead.



#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_



alexhappy 2009-12-30 14:06 鍙戣〃璇勮
]]>
鑷畾涔夌殑涓涓猈indows鍑洪敊娑堟伅瀹?/title><link>http://www.shnenglu.com/alexhappy/articles/79798.html</link><dc:creator>alexhappy</dc:creator><author>alexhappy</author><pubDate>Thu, 30 Apr 2009 09:34:00 GMT</pubDate><guid>http://www.shnenglu.com/alexhappy/articles/79798.html</guid><wfw:comment>http://www.shnenglu.com/alexhappy/comments/79798.html</wfw:comment><comments>http://www.shnenglu.com/alexhappy/articles/79798.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/alexhappy/comments/commentRss/79798.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/alexhappy/services/trackbacks/79798.html</trackback:ping><description><![CDATA[<p> </p> <p>#pragma comment( lib, "USER32" )</p> <p>#include <crtdbg.h><br>#define MTASSERT(a) _ASSERTE(a)</p> <p><br>#define MTVERIFY(a) /*if (!(a))*/ PrintError(#a,__FILE__,__LINE__,GetLastError())</p> <p>#define ERR_MESSAGE() PrintError("",__FILE__,__LINE__,GetLastError())</p> <p>__inline void PrintError(LPSTR linedesc, LPSTR filename, int lineno, DWORD errnum)<br>{<br>    LPSTR lpBuffer;<br>    char errbuf[256] = {0};</p> <p>#ifdef _WINDOWS<br>    char modulename[MAX_PATH];<br>#else // _WINDOWS</p> <p>    DWORD numread;<br>#endif // _WINDOWS</p> <p>    <br>    FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,NULL,errnum,LANG_NEUTRAL,(LPTSTR)&lpBuffer,0,NULL);<br>    <br>    //wsprintf(errbuf, "\nThe following call failed at line %d in %s:\n\n"<br>        //" %s\n\nReason: %s\n", lineno, filename, linedesc, lpBuffer);<br> wsprintf(errbuf,"´íÎó:%s",lpBuffer);</p> <p>#ifdef _WINDOWS<br>    GetModuleFileName(NULL, modulename, MAX_PATH);<br>    MessageBox(NULL, errbuf, modulename, MB_ICONWARNING|MB_OK|MB_TASKMODAL|MB_SETFOREGROUND);<br>#else<br>    WriteFile(GetStdHandle(STD_ERROR_HANDLE), errbuf, strlen(errbuf), &numread, FALSE );<br>    Sleep(3000);    <br>#endif</p> <p>    exit(EXIT_FAILURE);<br>}</p> <p>#include<fstream></p> <p>using namespace std;</p> <p>#define SYS_LOG(var) PrintLog(__FILE__,__LINE__,var)</p> <p>template <class T><br>__inline void PrintLog(T var){<br> ofstream out("log.txt",ios::app);<br> if(!out)<br>  return;<br> out<<var<<endl;<br> out.close();<br> return;<br>}</p> <p>template <class T><br>__inline void PrintLog(char *filename,int linenum,T var){<br> ofstream out("log.txt",ios::app);<br> if(!out)<br>  return;<br> out<<filename<<endl<<linenum<<" : "<<var<<endl<<endl;<br> out.close();<br> return;<br>}</p> <img src ="http://www.shnenglu.com/alexhappy/aggbug/79798.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/alexhappy/" target="_blank">alexhappy</a> 2009-04-30 17:34 <a href="http://www.shnenglu.com/alexhappy/articles/79798.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.psaus.cn" target="_blank">久久99精品久久久久久</a>| <a href="http://www.novagroup.com.cn" target="_blank">精品久久人人做人人爽综合 </a>| <a href="http://www.mbjywz.cn" target="_blank">久久久久久毛片免费播放</a>| <a href="http://www.jiaokuaidi.cn" target="_blank">新狼窝色AV性久久久久久</a>| <a href="http://www.odbgw.cn" target="_blank">国产精品久久久久9999高清</a>| <a href="http://www.haihuasuye.cn" target="_blank">91精品国产综合久久久久久</a>| <a href="http://www.pyqf.net.cn" target="_blank">久久影院亚洲一区</a>| <a href="http://www.dcjx02.cn" target="_blank">久久国产乱子伦免费精品</a>| <a href="http://www.huanheng.com.cn" target="_blank">99久久综合狠狠综合久久</a>| <a href="http://www.xszuhao.cn" target="_blank">伊人色综合久久天天人手人婷</a>| <a href="http://www.szmpp.cn" target="_blank">好久久免费视频高清</a>| <a href="http://www.f7799.cn" target="_blank">武侠古典久久婷婷狼人伊人</a>| <a href="http://www.whoimi.cn" target="_blank">国产V亚洲V天堂无码久久久</a>| <a href="http://www.cysq88.cn" target="_blank">久久久久久国产a免费观看黄色大片</a>| <a href="http://www.dgjiajun.net.cn" target="_blank">色婷婷综合久久久久中文一区二区 </a>| <a href="http://www.pchenshimin.com.cn" target="_blank">久久超碰97人人做人人爱</a>| <a href="http://www.ktze6z.cn" target="_blank">久久久精品国产Sm最大网站</a>| <a href="http://www.ahlgw.cn" target="_blank">久久精品国产亚洲AV电影</a>| <a href="http://www.54wk.cn" target="_blank">国产精品99久久久精品无码</a>| <a href="http://www.you-yong.com.cn" target="_blank">久久久久免费精品国产</a>| <a href="http://www.dntjj.cn" target="_blank">亚洲AV日韩精品久久久久久</a>| <a href="http://www.nboys.cn" target="_blank">性做久久久久久久久老女人 </a>| <a href="http://www.qiaochaohuagong.cn" target="_blank">久久久久国产一区二区</a>| <a href="http://www.buchaqian.org.cn" target="_blank">久久久无码精品亚洲日韩蜜臀浪潮</a>| <a href="http://www.jy06.cn" target="_blank">久久青青草原精品国产软件</a>| <a href="http://www.88177.com.cn" target="_blank">99久久99久久精品国产</a>| <a href="http://www.vip910.cn" target="_blank">国产一区二区三区久久精品</a>| <a href="http://www.szhtdkj88.cn" target="_blank">亚洲综合日韩久久成人AV</a>| <a href="http://www.huangjiguang.cn" target="_blank">久久这里有精品</a>| <a href="http://www.banburi.cn" target="_blank">午夜精品久久久久久</a>| <a href="http://www.k1822.cn" target="_blank">久久精品亚洲乱码伦伦中文</a>| <a href="http://www.fsxyzx.cn" target="_blank">久久精品夜色噜噜亚洲A∨</a>| <a href="http://www.wamiu.cn" target="_blank">色偷偷888欧美精品久久久</a>| <a href="http://www.loveindg.cn" target="_blank">久久国产精品99久久久久久老狼</a>| <a href="http://www.whruide.cn" target="_blank">国产麻豆精品久久一二三</a>| <a href="http://www.clwc.net.cn" target="_blank">久久久无码一区二区三区</a>| <a href="http://www.hbqw.net.cn" target="_blank">伊人久久大香线焦AV综合影院</a>| <a href="http://www.cqzmz.cn" target="_blank">国产色综合久久无码有码</a>| <a href="http://www.njw2008.cn" target="_blank">亚洲∧v久久久无码精品</a>| <a href="http://www.gdczjt.cn" target="_blank">少妇内射兰兰久久</a>| <a href="http://www.pu89.cn" target="_blank">久久久91精品国产一区二区三区</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>