server: Avoid using interlocked functions.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
5d5b6a1f35
commit
2633a5c1ae
|
@ -88,7 +88,7 @@ struct dir
|
||||||
uid_t uid; /* file stat.st_uid */
|
uid_t uid; /* file stat.st_uid */
|
||||||
struct list entry; /* entry in global change notifications list */
|
struct list entry; /* entry in global change notifications list */
|
||||||
unsigned int filter; /* notification filter */
|
unsigned int filter; /* notification filter */
|
||||||
int notified; /* SIGIO counter */
|
volatile int notified; /* SIGIO counter */
|
||||||
int want_data; /* return change data */
|
int want_data; /* return change data */
|
||||||
int subtree; /* do we want to watch subdirectories? */
|
int subtree; /* do we want to watch subdirectories? */
|
||||||
struct list change_records; /* data for the change */
|
struct list change_records; /* data for the change */
|
||||||
|
@ -307,7 +307,7 @@ void do_change_notify( int unix_fd )
|
||||||
LIST_FOR_EACH_ENTRY( dir, &change_list, struct dir, entry )
|
LIST_FOR_EACH_ENTRY( dir, &change_list, struct dir, entry )
|
||||||
{
|
{
|
||||||
if (get_unix_fd( dir->fd ) != unix_fd) continue;
|
if (get_unix_fd( dir->fd ) != unix_fd) continue;
|
||||||
interlocked_xchg_add( &dir->notified, 1 );
|
dir->notified = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -319,7 +319,8 @@ void sigio_callback(void)
|
||||||
|
|
||||||
LIST_FOR_EACH_ENTRY( dir, &change_list, struct dir, entry )
|
LIST_FOR_EACH_ENTRY( dir, &change_list, struct dir, entry )
|
||||||
{
|
{
|
||||||
if (interlocked_xchg( &dir->notified, 0 ))
|
if (!dir->notified) continue;
|
||||||
|
dir->notified = 0;
|
||||||
fd_async_wake_up( dir->fd, ASYNC_TYPE_WAIT, STATUS_ALERTED );
|
fd_async_wake_up( dir->fd, ASYNC_TYPE_WAIT, STATUS_ALERTED );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue