Projects
Browse Source     Search     Timeline     Wiki

Changeset 23250

Show
Ignore:
Timestamp:
05/10/07 14:23:35 (19 months ago)
Author:
zarzycki@…
Message:

Let's start using the EV_RECEIPT feature I added to the kernel kqueue logic.

Location:
trunk/launchd/src
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/launchd/src/launchd_core_logic.c

    r23247 r23250  
    30693069socketgroup_watch(job_t j, struct socketgroup *sg) 
    30703070{ 
     3071        struct kevent kev[sg->fd_cnt]; 
    30713072        char buf[10000]; 
    30723073        unsigned int i, buf_off = 0; 
     
    30823083 
    30833084        for (i = 0; i < sg->fd_cnt; i++) { 
    3084                 job_assumes(j, kevent_mod(sg->fds[i], EVFILT_READ, EV_ADD, 0, 0, j) != -1); 
     3085                EV_SET(&kev[i], sg->fds[i], EVFILT_READ, EV_ADD, 0, 0, j); 
     3086        } 
     3087 
     3088        job_assumes(j, kevent_bulk_mod(kev, sg->fd_cnt) != -1); 
     3089 
     3090        for (i = 0; i < sg->fd_cnt; i++) { 
     3091                job_assumes(j, kev[i].flags & EV_ERROR); 
     3092                errno = kev[i].data; 
     3093                job_assumes(j, kev[i].data == 0); 
    30853094        } 
    30863095} 
  • trunk/launchd/src/launchd_runtime.c

    r23244 r23250  
    677677 
    678678int 
     679kevent_bulk_mod(struct kevent *kev, size_t kev_cnt) 
     680{ 
     681        size_t i; 
     682 
     683        for (i = 0; i < kev_cnt; i++) { 
     684                kev[i].flags |= EV_CLEAR|EV_RECEIPT; 
     685        } 
     686 
     687        return kevent(mainkq, kev, kev_cnt, kev, kev_cnt, NULL); 
     688} 
     689 
     690int 
    679691kevent_mod(uintptr_t ident, short filter, u_short flags, u_int fflags, intptr_t data, void *udata) 
    680692{ 
  • trunk/launchd/src/launchd_runtime.h

    r23186 r23250  
    7272 
    7373 
     74int kevent_bulk_mod(struct kevent *kev, size_t kev_cnt); 
    7475int kevent_mod(uintptr_t ident, short filter, u_short flags, u_int fflags, intptr_t data, void *udata); 
    7576