关闭

printk_time 中时间戳的获取

970人阅读 评论(0) 收藏 举报
分类:
可以在用prink打的log前面加上时间戳,但这个时间戳是怎么得到的呢?
我们知道printk-> vprintk_emit
1608 asmlinkage int vprintk_emit(int facility, int level,
1609                             const char *dict, size_t dictlen,
1610                             const char *fmt, va_list args)
1611 {
1748                 if (cont.len) {
1749                         if (cont.owner == current && !(lflags & LOG_PREFIX))
1750                                 stored = cont_add(facility, level, text,
1751                                                   text_len);
1752                         cont_flush(LOG_NEWLINE);
1753                 }
1754 
1755                 if (stored)
1756                         printed_len += text_len;
1757                 else
1758                         printed_len += log_store(facility, level, lflags, 0,
1759                                                  dict, dictlen, text, text_len);
1760         }
1761 


这个函数的1748行会判断要打印的log是否为NULL,不为NULL的话,就会走到cont_add 来得到当前log的时间
1546 static bool cont_add(int facility, int level, const char *text, size_t len)
1547 {
1548         if (cont.len && cont.flushed)
1549                 return false;
1550 
1551         /*
1552          * If ext consoles are present, flush and skip in-kernel
1553          * continuation.  See nr_ext_console_drivers definition.  Also, if
1554          * the line gets too long, split it up in separate records.
1555          */
1556         if (nr_ext_console_drivers || cont.len + len > sizeof(cont.buf)) {
1557                 cont_flush(LOG_CONT);
1558                 return false;
1559         }
1560 
1561         if (!cont.len) {
1562                 cont.facility = facility;
1563                 cont.level = level;
1564                 cont.owner = current;
1565                 cont.ts_nsec = local_clock();
1566                 cont.flags = 0;
1567                 cont.cons = 0;
1568                 cont.flushed = false;
1569         }
1570 
1571         memcpy(cont.buf + cont.len, text, len);
1572         cont.len += len;
1573 
1574         if (cont.len > (sizeof(cont.buf) * 80) / 100)
1575                 cont_flush(LOG_CONT);
1576 
1577         return true;
1578 }
这个函数的1665行会得到通过local_clock得到当前时间。在vprintk_emit 也可能是走log_store 这个flow,里面也是调用local_clock 来得到时间。
所以结论就是prink 中的时间戳是通过local_clock得到的.
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

修改Linux内核的printk缓冲区(log缓冲区)大小

我们可以用printk打印kernel的日志信息(即log信息),根据时间戳可以判断内核新打印的log会覆盖掉以前打印的log。原因是内核用环形缓冲区存放打印的log信息。那么如何增大缓冲区的大小呢?...
  • chenzhen1080
  • chenzhen1080
  • 2017-02-18 16:26
  • 1948

linux获取系统时间和时间戳

linux获取系统时间和时间戳 linux下c/c++编程需要系统时间,一个是获取时间戳和计算时间差,一个获取当前时间用来作为文件名等,方法和例子如下: 可以用man命令查询time,lo...
  • openswc
  • openswc
  • 2016-11-08 15:30
  • 8982

c/c++打印带完整附加信息(带时间戳、pid等)的日志,类adb logcat -v threadtime格式

进来在Linux下开发中用到c/c++和nodejs混合编程,看到adb logcat -v threadtime 打出来的Log那么整齐规范,非常想把c/c++代码的log规范成这种效果一下, 需要...
  • catsanddogsman
  • catsanddogsman
  • 2016-12-26 10:48
  • 1904

Go语言学习之time包(获取当前时间戳等)(the way to go)

生命不止,继续 go go go !!!每种语言都需要对时间进行处理,golang当然也不例外,go语言为我们提供了time package用于各种时间的转换,处理。Package time prov...
  • wangshubo1989
  • wangshubo1989
  • 2017-06-21 13:33
  • 13092

在C#中获取如PHP函数time()一样的时间戳[原创]

来自:http://www.cnblogs.com/locoy/archive/2006/08/10/473105.html c#中没有象PHP一样的time()时间戳函数,但有DateTi...
  • ArvinStudy
  • ArvinStudy
  • 2013-05-02 11:12
  • 654

在C#中获取如PHP函数time()一样的时间戳

c#中没有象PHP一样的time()时间戳函数,但有DateTime.Now.Ticks用来计算时间差。  此属性的值为自 0001 年 1 月 1 日午夜 12:00 以来所经过时间以 100...
  • fer_ba
  • fer_ba
  • 2014-03-25 15:00
  • 577

PHP--date转成时间戳,time()获取的…

PHP--date转成时间戳,time()获取的是秒数  time()获取的是秒数  date("Y-m-d H:i:s");  //如果存成datetime型在MYSQL中 必须用这种格式 实现功能...
  • rongwenbin
  • rongwenbin
  • 2013-08-09 17:38
  • 566

数字时间戳(DTS,digital time-stamp)的原理

  • 2010-05-10 17:38
  • 24KB
  • 下载

Linux/Unix time时间戳的处理转换函数

linux下的时间函数 我们在编程中可能会经常用到时间,比如取得系统的时间(获取系统的年、月、日、时、分、秒,星期等),或者是隔一段时间去做某事,那么我们就用到一些时间函数。 linux下...
  • jolin678
  • jolin678
  • 2015-07-08 10:09
  • 316

Linux/Unix time时间戳的处理转换函数

Linux/Unix time时间戳的处理转换函数 2010-10-20 14:44 8068人阅读 评论(2) 收藏 举报 structtimezonedstgccsun存储 ...
  • linuxheik
  • linuxheik
  • 2013-12-24 16:57
  • 456
    个人资料
    • 访问:256721次
    • 积分:12793
    • 等级:
    • 排名:第1272名
    • 原创:1062篇
    • 转载:0篇
    • 译文:11篇
    • 评论:9条
    最新评论