Commit 2633a5c1 authored by Alexandre Julliard's avatar Alexandre Julliard

server: Avoid using interlocked functions.

parent 5d5b6a1f
......@@ -88,7 +88,7 @@ struct dir
uid_t uid; /* file stat.st_uid */
struct list entry; /* entry in global change notifications list */
unsigned int filter; /* notification filter */
int notified; /* SIGIO counter */
volatile int notified; /* SIGIO counter */
int want_data; /* return change data */
int subtree; /* do we want to watch subdirectories? */
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 )
{
if (get_unix_fd( dir->fd ) != unix_fd) continue;
interlocked_xchg_add( &dir->notified, 1 );
dir->notified = 1;
break;
}
}
......@@ -319,8 +319,9 @@ void sigio_callback(void)
LIST_FOR_EACH_ENTRY( dir, &change_list, struct dir, entry )
{
if (interlocked_xchg( &dir->notified, 0 ))
fd_async_wake_up( dir->fd, ASYNC_TYPE_WAIT, STATUS_ALERTED );
if (!dir->notified) continue;
dir->notified = 0;
fd_async_wake_up( dir->fd, ASYNC_TYPE_WAIT, STATUS_ALERTED );
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment