时间子系统15_获取系统时间

//	获取系统时间
//	注:将timespec转换为timeval
1.1 void do_gettimeofday(struct timeval *tv)
{
	struct timespec now;
	getnstimeofday(&now);
	tv->tv_sec = now.tv_sec;
	tv->tv_usec = now.tv_nsec/1000;
}

//	获取纳秒级系统时间
//	函数任务:
//		1.获取墙上时间t
//		2.获取距离上次更新xtime以来经历的纳秒deltat
//		3.t+deltat计算精确的当前时间
1.2 void getnstimeofday(struct timespec *ts)
{
	unsigned long seq;
	s64 nsecs;
	do {
		seq = read_seqbegin(&xtime_lock);
		//获取墙上时间t
		*ts = xtime;
		//获取距离上次更新xtime以来经历的纳秒deltat
		nsecs = timekeeping_get_ns();

	} while (read_seqretry(&xtime_lock, seq));
	//t+deltat得到精确时间
	timespec_add_ns(ts, nsecs);
}

//	计算距离上次更新xtime以来经历的纳秒数
//	函数任务:
//		1.使用timerkeeper的时钟源读取当前的cycle
//		2.计算距离上次更新xtime以来的cycle delta
//		3.转换cycle delta到ns
//	注:
//		使用ntp矫正过的shift和mult,转换cycle delta到ns.
1.3 static inline s64 timekeeping_get_ns(void)
{
	cycle_t cycle_now, cycle_delta;
	struct clocksource *clock;

	/* read clocksource: */
	clock = timekeeper.clock;
	cycle_now = clock->read(clock);
	cycle_delta = (cycle_now - clock->cycle_last) & clock->mask;
	return clocksource_cyc2ns(cycle_delta, timekeeper.mult,
				  timekeeper.shift);
}

//	获取系统单调时间
//	函数任务:
//		1.获取单调时间t
//		2.计算距离上次更新xtime以来的deltat
//		3.t+deltat得到精确时间
//	注:
//		1.ktime_get获取自系统启动以来的单调时间
//		2.墙上时间(xtime)加上wall_to_monotonic获取单调时间
2.1 ktime_t ktime_get(void)
{
	unsigned int seq;
	s64 secs, nsecs;

	do {
		seq = read_seqbegin(&xtime_lock);
		//获取单调时间t
		secs = xtime.tv_sec + wall_to_monotonic.tv_sec;
		nsecs = xtime.tv_nsec + wall_to_monotonic.tv_nsec;
		//计算距离上次更新xtime以来的deltat
		nsecs += timekeeping_get_ns();

	} while (read_seqretry(&xtime_lock, seq));
	//t+deltat得到精确时间
	return ktime_add_ns(ktime_set(secs, 0), nsecs);
}
时间: 2024-12-02 02:37:10

时间子系统15_获取系统时间的相关文章

VC获取系统时间、程序运行时间

1.使用CTime类 CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime(); str=tm.Format("现在时间是%Y年%m月%d日 %X"); MessageBox(str,NULL,MB_OK); 2: 得到系统时间日期(使用GetLocalTime) SYSTEMTIME st; CString strDate,strTime; GetLocalTime(&st); strDate.Format(&quo

Dos下获取系统时间的代码

dos下获取系统时间的实现代码,需要的朋友可以参考下   复制代码 代码如下:   rem DOS get current time  rem =======================  rem get yyyy/mm/dd  set mydate=%DATE:~0,10%  echo %mydate%  rem =======================  rem get yyyy  set yyyy=%DATE:~0,4%  echo %yyyy%  rem ===========

jsp页面获取系统时间写入后台数据库

问题描述 jsp页面获取系统时间写入后台数据库 我使用的是ssh框架,在user表中有个user_registertime是Date类型,想从jsp中获取系统时间写入到user中作为user_registertime,求教各位大神该怎么处理? 解决方案 为什么要从jsp获取时间,直接在sql中调用date函数就可以得到时间了. 解决方案二: 如果你用的是mysql 直接写 now() 就把当前时间加入数据库了 解决方案三: <%=new SimpleDateFormat(""yy

sql 获取系统时间的时候怎么获取不到

问题描述 sql 获取系统时间的时候怎么获取不到 获取系统时间,用的DateUtilits.getSystemTime();获取到的时间是null,为什么啊 解决方案 c++ 如何获取系统时间Android获取系统时间linux获取系统当前时间 解决方案二: GETDATE() 解决方案三: SQL Server的话,提供了GETDATE函数,你可以在sql 语句中直接使用 解决方案四: 為啥不用 select sysdate from dual 解决方案五: sql server中 用getd

android-Android中为何获取系统时间的方法多次执行后时间仍不变

问题描述 Android中为何获取系统时间的方法多次执行后时间仍不变 我自定义了一个view,每次这个view一触碰,就执行方法calendar.get(calendar.second);来获取当前系统秒数,可是每一次触碰后,在MotionEvent.action_down下,系统秒数都是第一次执行后得到的结果,这是为什么?此方法重新执行,不理性得到最新的秒数吗, 解决方案 我觉得问题是因为,你只初始化了一次Calender calender =Calender.getInstance(),而以

在maven中如何获取系统时间?

问题描述 项目要求,用maven打包的时候,生成的文件以系统时间结尾,但是不知道怎么在在maven中如何获取系统时间?求解答..... 解决方案 <finalName>${project.artifactId}-${project.version}-${buildNumber}</finalName><plugin><groupId>org.codehaus.mojo</groupId><artifactId>buildnumber-

VC++ 获取系统时间的方法汇总_C 语言

1.使用CTime类(获取系统当前时间,精确到秒) CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime();//获取系统日期 str=tm.Format("现在时间是%Y年%m月%d日 %X"); MessageBox(str,NULL,MB_OK); a,从CTimet中提取年月日时分秒 CTime t = CTime::GetCurrentTime(); int d=t.GetDay(); //获得几号 int y=t.

Cocos2d-x中获取系统时间和随机数实例_C 语言

随机数是我们在程序中经常要用到的,cocos2d-x用CCRANDOM_0_1产生随机数,但我们最后给它传入一个随机数种子,这样产生的随机数才是真正的随机数,而这个种子就是我们一般使用的时间.下面通过代码看看我们如何实现. bool HelloWorld::init() { bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); //获取系统时间 //time_t是long类型,精确到秒,通过time()函数可以获得当前时间和1970年1月

大家有没有遇到这样的问题啊 我的java应用在EC2上运行 java获取系统时间插入数据库的时候,总是显示时间是null的?

问题描述 大家有没有遇到这样的问题啊我的java应用在EC2上运行java获取系统时间插入数据库的时候,总是显示时间是null的?