add: shm_free(ptr);
context: int remove_watcher(struct urecord* _r, notcb_t _c, void* _d){	notify_cb_t* ptr, *prev = 0;;	ptr = _r->watchers;	while(ptr) {		if ((ptr->cb == _c) && (ptr->data == _d)) {			if (prev) prev->next = ptr->next;			else _r->watchers = ptr->next;			return 0;		}		prev = ptr;		ptr = ptr->next;	}	return 1;}