|
|
@@ -0,0 +1,66 @@
|
|
|
+SYS_TIMERFD_CREATE equ 0x142
|
|
|
+SYS_TIMERFD_GETTIME equ 0x146
|
|
|
+SYS_TIMERFD_SETTIME equ 0x145
|
|
|
+
|
|
|
+section .bss
|
|
|
+ tfd RESB 4
|
|
|
+ tst RESB 4
|
|
|
+ lt RESB 1
|
|
|
+
|
|
|
+section .data
|
|
|
+ tick equ 2
|
|
|
+ msg db 'tick',0xa
|
|
|
+ msgl equ 5
|
|
|
+
|
|
|
+section .text
|
|
|
+ global _start
|
|
|
+
|
|
|
+_start:
|
|
|
+
|
|
|
+ mov [lt], byte 0x0
|
|
|
+
|
|
|
+ ;prepeare sys_timerfd_create
|
|
|
+ mov eax, SYS_TIMERFD_CREATE
|
|
|
+ mov ebx, 1
|
|
|
+ mov ecx, 0
|
|
|
+ int 0x80
|
|
|
+
|
|
|
+ ;get timer fd
|
|
|
+ mov [tfd], eax
|
|
|
+
|
|
|
+ mov [tst], dword 0x0
|
|
|
+
|
|
|
+ ;settime sys_timerfd_settime
|
|
|
+ mov eax, SYS_TIMERFD_SETTIME
|
|
|
+ mov ebx, [tfd]
|
|
|
+ mov ecx, dword 0x0
|
|
|
+ mov edx, tst
|
|
|
+ mov esi, tst
|
|
|
+ int 0x80
|
|
|
+
|
|
|
+poll:
|
|
|
+ ;get time
|
|
|
+ mov eax, SYS_TIMERFD_GETTIME
|
|
|
+ mov ebx, [tfd]
|
|
|
+ mov ecx, tst
|
|
|
+ int 0x80
|
|
|
+
|
|
|
+ mov bx, [tst]
|
|
|
+ sub bx, [lt]
|
|
|
+ cmp bx, tick
|
|
|
+ jg poll
|
|
|
+
|
|
|
+ mov [lt], bx
|
|
|
+
|
|
|
+ mov eax, 4
|
|
|
+ mov ebx, 1
|
|
|
+ mov ecx, msg
|
|
|
+ mov edx, msgl
|
|
|
+ int 0x80
|
|
|
+
|
|
|
+ ;jmp poll
|
|
|
+
|
|
|
+exit:
|
|
|
+ mov eax, 1
|
|
|
+ mov ebx, 0
|
|
|
+ int 0x80
|