内核态do_gettimeofday函数返回的timeval如何转成年月日时分秒的格式?

morneve1 2010-02-05 04:51:49
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
#endif

struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};

struct timezone {
int tz_minuteswest; /* minutes west of Greenwich */
int tz_dsttime; /* type of dst correction */
};

内核态do_gettimeofday函数返回的timeval如何转成年月日时分秒的格式?
有什么函数可用,还望大家指点,感激
...全文
2128 15 打赏 收藏 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
morneve1 2010-02-21
  • 打赏
  • 举报
回复
先用proc文件系统简单传到kernel吧,do_fork的方法留以后试试
morneve1 2010-02-21
  • 打赏
  • 举报
回复
非常感谢各位指教,特别是do_fork
do_fork 2010-02-09
  • 打赏
  • 举报
回复
open => filp_open
read => vfs_read
write => vfs_write
close => filp_close

内核空间和用户空间的地址空间不同,一些函数有地址空间限制,
所以读写的时候,vfs_xxx之前需要set_fs解除这个限制。

fs/exec.c中有个例子,可以参考下
 681 int kernel_read(struct file *file, loff_t offset,
682 char *addr, unsigned long count)
683 {
684 mm_segment_t old_fs;
685 loff_t pos = offset;
686 int result;
687
688 old_fs = get_fs();
689 set_fs(get_ds());
690 /* The cast to a user pointer is valid due to the set_fs() */
691 result = vfs_read(file, (void __user *)addr, count, &pos);
692 set_fs(old_fs);
693 return result;
694 }


你也可以开一个内核线程,在内核线程中做这样的事情,
最好还是由用户空间程序配合内核做这个事情,以减少潜在错误,降低不稳定性因素。
morneve1 2010-02-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 morneve1 的回复:]
喔,那怎么在内核查普通文件? 感谢
[/Quote]

do_fork兄还在不?我查到我的系统用的是/etc/TZ这个文件
morneve1 2010-02-07
  • 打赏
  • 举报
回复
strftime是内核可以用的函数吗?

这个函数好象不能用吧
morneve1 2010-02-07
  • 打赏
  • 举报
回复
喔,那怎么在内核查普通文件? 感谢
do_fork 2010-02-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 morneve1 的回复:]
谢谢do_fork,我是2.6.20.s内核没发现有/etc/localtime 这个文件啊?


谢谢mostmark,strftime是内核可以用的函数吗?
[/Quote]

这个文件是文件系统中的,不是内核的一部分,只是个普通文件
morneve1 2010-02-07
  • 打赏
  • 举报
回复
谢谢do_fork,我是2.6.20.s内核没发现有/etc/localtime 这个文件啊?


谢谢mostmark,strftime是内核可以用的函数吗?
do_fork 2010-02-07
  • 打赏
  • 举报
回复
从内核中访问 /etc/localtime 文件,里面存储着时区信息
mostmark 2010-02-07
  • 打赏
  • 举报
回复
strftime()
很强大
morneve1 2010-02-07
  • 打赏
  • 举报
回复
内核模块如何取得时区啊?

兄弟们知道的帮忙啊
morneve1 2010-02-05
  • 打赏
  • 举报
回复
谢谢2楼,是不是没有现成函数的?

还有内核态如何取得时区
morneve1 2010-02-05
  • 打赏
  • 举报
回复
最终转换还缺个时间timezone喔,还请解释下,这个从哪可以取到?

谢谢兄弟们了
ma100 2010-02-05
  • 打赏
  • 举报
回复
http://www.xgdown.com/article/175/50550_1.htm
morneve1 2010-02-05
  • 打赏
  • 举报
回复
用户态下有localtime和gmtime将timeval.time_t转成struct tm的,
不知道内核应该怎么搞,好象没有这些函数的
内容概要:本文围绕基于物理场的动态模式分解(piDMD)展开研究,重点探讨其在流体力学、热传导及多物理耦合系统中的建模与应用。通过Matlab代码实现,将传统的动态模式分解(DMD)方法与物理场控制方程相结合,引入物理约束以增强数据驱动模型的物理一致性,从而提升对复杂非线性系统的模态提取精度与长期预测能力。文章系统阐述了piDMD的理论基础、数学推导过程与算法实现步骤,并结合典型物理场仿真案例(如Navier-Stokes方程驱动的流场演化)进行验证,展示了其在降阶建模、主导模态识别和时空动态可视化方面的优越性能,适用于高维、强耦合、非平稳系统的分析与优化。; 适合人群:具备一定数值计算、流体力学、控制理论或数据驱动建模背景,熟悉Matlab编程与线性代数运算,从事科学研究、工程仿真或系统辨识工作的研究生、科研人员及工程师。; 使用场景及目标:①实现对流场、温度场等物理场的高效降阶建模与动态行为预测;②提取符合物理规律的关键模态,用于系统稳定性分析与控制设计;③支撑复杂系统的状态估计、异常检测与优化调控等下游任务。; 阅读建议:建议读者结合提供的Matlab代码逐行调试与运行,深入理解piDMD算法中物理约束的嵌入方式及其对模态质量的影响,同时可尝试将其迁移至其他偏微分方程描述的物理系统中进行拓展验证与应用。

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧