Advertisement
Guest User

macos kevent in v

a guest
Dec 15th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.87 KB | None | 0 0
  1. import (
  2.         log
  3.         time
  4.         )
  5.  
  6. #include <sys/event.h>
  7. #include <sys/time.h>
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h> /* for strerror() */
  11. #include <unistd.h>
  12.  
  13. struct Kevent{
  14.         mut:
  15.         ident voidptr          /* identifier for this event */
  16.         filter i16         /* filter for event */
  17.         flags u16          /* general flags */
  18.         fflags u32        /* filter-specific flags */
  19.         data voidptr            /* filter-specific data */
  20.         udata voidptr        /* opaque user data identifier */
  21. }
  22.  
  23. fn C.kqueue() int
  24. fn C.kevent(int, &Kevent , int, &Kevent , int, C.timespec) int
  25. fn C.delay(int)
  26.  
  27.  
  28. fn main(){
  29.  
  30. changes := [2]Kevent
  31. events := [2]Kevent
  32.  
  33.  
  34.         mut l := log.Log{}
  35.         l.set_level(log.INFO)
  36.         // Make a new file called info.log in the current folder
  37.         l.set_full_logpath('./info.log')
  38.         println('Please check the file: ${l.output_file_name} after this program crashes.')
  39.  
  40.         kq := C.kqueue()
  41.         if kq == -1 {
  42.                 l.fatal('kqueue()')
  43.         }
  44.  
  45.         mut change := Kevent{}
  46.          change.ident= 1
  47.          change.filter= -7
  48.          change.flags= (0x0001 | 0x0004)
  49.          change.fflags= 0
  50.          change.data= 5000
  51.          change.udata= 0
  52.  
  53.         mut event := Kevent{}
  54.  
  55.         for{
  56.                 nev := C.kevent(kq, &change, 1, &event, 1, C.NULL)
  57.                 if(nev < 0){
  58.                         l.fatal('kevent()..')
  59.                 } else if (nev > 0){
  60.                         tmp := int(event.flags) & C.EV_ERROR
  61.                         if (tmp > 0){
  62.                                 println('ev_ERROR:')
  63.                                 l.fatal('EV_ERROR')
  64.                         }
  65.             go print_date(time.now().format_ss())
  66.                 }
  67.  
  68.         }
  69. }
  70.  
  71. fn print_date(s string){
  72.     println(s)
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement