Lines Matching defs:kfse

143 static int  watcher_add_event(fs_event_watcher *watcher, kfs_event *kfse);
283 static void release_event_ref(kfs_event *kfse);
334 // is essentially dropped and the kfse structure reused.
382 kfs_event *kfse, *kfse_dest=NULL, *cur;
486 kfse = zalloc_noblock(event_zone);
487 if (kfse && (type == FSE_RENAME || type == FSE_EXCHANGE)) {
491 zfree(event_zone, kfse);
492 kfse = NULL;
497 if (kfse == NULL) { // yikes! no free events
553 memset(kfse, 0, sizeof(kfs_event));
554 kfse->refcount = 1;
555 OSBitOrAtomic16(KFSE_BEING_CREATED, &kfse->flags);
557 last_event_ptr = kfse;
558 kfse->type = type;
559 kfse->abstime = now;
560 kfse->pid = p->p_pid;
569 kfse->dest = kfse_dest;
573 if (kfse->type == FSE_RENAME) {
576 LIST_INSERT_HEAD(&kfse_list_head, kfse, kevent_list);
578 if (kfse->refcount < 1) {
579 panic("add_fsevent: line %d: kfse recount %d but should be at least 1\n", __LINE__, kfse->refcount);
586 // the kfse
589 cur = kfse;
598 if (kfse->str != NULL) {
697 if (kfse->str != NULL) {
722 OSBitAndAtomic16(~KFSE_BEING_CREATED, &kfse->flags);
742 if (watcher_add_event(watcher, kfse) != 0) {
748 // if (kfse->refcount < 1) {
749 // panic("add_fsevent: line %d: kfse recount %d but should be at least 1\n", __LINE__, kfse->refcount);
762 release_event_ref(kfse);
769 release_event_ref(kfs_event *kfse)
775 old_refcount = OSAddAtomic(-1, &kfse->refcount);
781 if (last_event_ptr == kfse) {
787 if (kfse->refcount < 0) {
788 panic("release_event_ref: bogus kfse refcount %d\n", kfse->refcount);
791 if (kfse->refcount > 0 || kfse->type == FSE_INVALID) {
800 // the kfse->type is invalid then someone else already
812 copy = *kfse;
813 if (kfse->dest && OSAddAtomic(-1, &kfse->dest->refcount) == 1) {
814 dest_copy = *kfse->dest;
821 kfse->pid = kfse->type; // save this off for debugging...
822 kfse->uid = (uid_t)(long)kfse->str; // save this off for debugging...
823 kfse->gid = (gid_t)(long)current_thread();
825 kfse->str = (char *)0xdeadbeef; // XXXdbg - catch any cheaters...
828 kfse->dest->str = (char *)0xbadc0de; // XXXdbg - catch any cheaters...
829 kfse->dest->type = FSE_INVALID;
831 if (kfse->dest->kevent_list.le_prev != NULL) {
833 LIST_REMOVE(kfse->dest, kevent_list);
834 memset(&kfse->dest->kevent_list, 0xa5, sizeof(kfse->dest->kevent_list));
837 zfree(event_zone, kfse->dest);
844 otype = kfse->type;
845 kfse->type = FSE_INVALID;
847 if (kfse->kevent_list.le_prev != NULL) {
852 LIST_REMOVE(kfse, kevent_list);
853 memset(&kfse->kevent_list, 0, sizeof(kfse->kevent_list));
857 zfree(event_zone, kfse);
966 kfs_event *kfse;
1011 kfse = watcher->event_queue[watcher->rd];
1015 if (kfse != NULL && kfse->type != FSE_INVALID && kfse->refcount >= 1) {
1016 release_event_ref(kfse);
1089 watcher_add_event(fs_event_watcher *watcher, kfs_event *kfse)
1091 if (kfse->abstime > watcher->max_event_id) {
1092 watcher->max_event_id = kfse->abstime;
1101 OSAddAtomic(1, &kfse->refcount);
1102 watcher->event_queue[watcher->wr] = kfse;
1125 kfse = watcher->event_queue[watcher->rd];
1129 if (kfse != NULL && kfse->type != FSE_INVALID && kfse->refcount >= 1) {
1130 release_event_ref(kfse);
1217 static int copy_out_kfse(fs_event_watcher *watcher, kfs_event *kfse, struct uio *uio) __attribute__((noinline));
1220 copy_out_kfse(fs_event_watcher *watcher, kfs_event *kfse, struct uio *uio)
1229 if (kfse->type == FSE_INVALID) {
1230 panic("fsevents: copy_out_kfse: asked to copy out an invalid event (kfse %p, refcount %d fref ptr %p)\n", kfse, kfse->refcount, kfse->str);
1233 if (kfse->flags & KFSE_BEING_CREATED) {
1237 if (kfse->type == FSE_RENAME && kfse->dest == NULL) {
1242 // (that is, another kfse points to this one so it's ok
1251 type = (kfse->type & 0xfff);
1253 if (kfse->flags & KFSE_CONTAINS_DROPPED_EVENTS) {
1255 } else if (kfse->flags & KFSE_COMBINED_EVENTS) {
1260 type = (int32_t)kfse->type;
1268 memcpy(&evbuff[evbuff_idx], &kfse->pid, sizeof(pid_t));
1271 cur = kfse;
1382 kfs_event *kfse;
1458 kfse = watcher->event_queue[watcher->rd];
1459 if (!kfse || kfse->type == FSE_INVALID || kfse->refcount < 1) {
1463 if (watcher->event_list[kfse->type] == FSE_REPORT && watcher_cares_about_dev(watcher, kfse->dev)) {
1465 if (!(watcher->flags & WATCHER_APPLE_SYSTEM_SERVICE) & is_ignored_directory(kfse->str)) {
1473 if (last_event_ptr == kfse) {
1478 error = copy_out_kfse(watcher, kfse, uio);
1500 release_event_ref(kfse);