Changeset 8088 for lang/c

Show
Ignore:
Timestamp:
03/18/08 20:55:10 (9 months ago)
Author:
frsyuki
Message:

lang/c/mpio: supported FreeBSD (kqueue)

Location:
lang/c/mpio/trunk/mp
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • lang/c/mpio/trunk/mp/event.h

    r6888 r8088  
    1111#      define MP_SYSTEM epoll 
    1212#    elif defined(__APPLE__) && defined(__MACH__) 
    13 //#      define MP_SYSTEM kqueue   // FIXME doesn't work 
     13//#      define MP_SYSTEM kqueue   // Darwin's kqueue seems to be broken 
    1414#      define MP_SYSTEM select 
    15 //#    elif defined(BSD)           // FIXME 
    16 //#      define MP_SYSTEM kqueue 
     15#    elif defined(__FreeBSD__) || defined(__NetBSD__) 
     16#      define MP_SYSTEM kqueue 
    1717#    else 
    1818#      define MP_SYSTEM select 
  • lang/c/mpio/trunk/mp/system/buffered_kqueue.h

    r6840 r8088  
    1515static const short EV_READ  = 0x01; 
    1616static const short EV_WRITE = 0x02; 
     17static const short EV_FILT_MAP[3] = {0, EVFILT_READ, EVFILT_WRITE}; 
    1718 
    1819class system { 
     
    3839private: 
    3940        int m_kqfd; 
    40         static const short EVFILT_MAP[3]; 
    4141}; 
    4242 
  • lang/c/mpio/trunk/mp/system/buffered_kqueue_impl.h

    r6740 r8088  
    44namespace mp { 
    55 
    6  
    7 const short system::EVFILT_MAP[3] = {0, EVFILT_READ, EVFILT_WRITE}; 
    86 
    97system::system() : m_kqfd(kqueue()) 
     
    5250        struct kevent kev; 
    5351        if( add_event ) { 
    54                 EV_SET(&kev, fd, EVFILT_MAP[add_event], EV_ADD, 0, 0, NULL); 
     52                EV_SET(&kev, fd, EV_FILT_MAP[add_event], EV_ADD, 0, 0, NULL); 
    5553        } else { 
    5654                short delete_event = oldevent & ~newevent; 
    57                 EV_SET(&kev, fd, EVFILT_MAP[delete_event], EV_DELETE, 0, 0, NULL); 
     55                EV_SET(&kev, fd, EV_FILT_MAP[delete_event], EV_DELETE, 0, 0, NULL); 
    5856        } 
    5957        m_buffered.push_back(kev); 
  • lang/c/mpio/trunk/mp/system/kqueue.h

    r6840 r8088  
    1414static const short EV_READ  = 0x01; 
    1515static const short EV_WRITE = 0x02; 
     16static const short EV_FILT_MAP[3] = {0, EVFILT_READ, EVFILT_WRITE}; 
    1617 
    1718class system { 
     
    3536private: 
    3637        int m_kqfd; 
    37         static const short EVFILT_MAP[3]; 
    3838}; 
    3939 
  • lang/c/mpio/trunk/mp/system/kqueue_impl.h

    r6740 r8088  
    44namespace mp { 
    55 
    6  
    7 const short system::EVFILT_MAP[3] = {0, EVFILT_READ, EVFILT_WRITE}; 
    86 
    97system::system() : m_kqfd(kqueue()) 
     
    2927        } 
    3028        struct kevent kev; 
    31         EV_SET(&kev, fd, EVFILT_MAP[event], EV_ADD, 0, 0, NULL); 
     29        EV_SET(&kev, fd, EV_FILT_MAP[event], EV_ADD, 0, 0, NULL); 
    3230        return kevent(m_kqfd, &kev, 1, NULL, 0, NULL); 
    3331} 
     
    4240        } 
    4341        struct kevent kev; 
    44         EV_SET(&kev, fd, EVFILT_MAP[oldevent], EV_DELETE, 0, 0, NULL); 
     42        EV_SET(&kev, fd, EV_FILT_MAP[oldevent], EV_DELETE, 0, 0, NULL); 
    4543        return kevent(m_kqfd, &kev, 1, NULL, 0, NULL); 
    4644} 
     
    5149        struct kevent kev; 
    5250        if( add_event ) { 
    53                 EV_SET(&kev, fd, EVFILT_MAP[add_event], EV_ADD, 0, 0, NULL); 
     51                EV_SET(&kev, fd, EV_FILT_MAP[add_event], EV_ADD, 0, 0, NULL); 
    5452        } else { 
    5553                short delete_event = oldevent & ~newevent; 
    56                 EV_SET(&kev, fd, EVFILT_MAP[delete_event], EV_DELETE, 0, 0, NULL); 
     54                EV_SET(&kev, fd, EV_FILT_MAP[delete_event], EV_DELETE, 0, 0, NULL); 
    5755        } 
    5856        return kevent(m_kqfd, &kev, 1, NULL, 0, NULL);