Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/sys/external/bsd/common



Module Name:    src
Committed By:   riastradh
Date:           Mon Aug 27 15:06:02 UTC 2018

Modified Files:
        src/sys/external/bsd/common/include/linux: workqueue.h
        src/sys/external/bsd/common/linux: linux_work.c

Log Message:
Rework Linux workqueue synchronization yet again.

- Use a low bit in the pointer to the queue, rather than whether the
  pointer is null or not, to determine whether the work item is
  queued/scheduled.

- _Preserve_ the pointer to the queue after we release the work.

- Release the work _before_ executing the function, not after.

This simplifies some things: we no longer have to distinguish whether
the work is queued or running in the functions where we are trying to
modify it.  The pointer has to be preserved even after the work is
released so that we can flush the workqueue after the work has been
released.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 \
    src/sys/external/bsd/common/include/linux/workqueue.h
cvs rdiff -u -r1.38 -r1.39 src/sys/external/bsd/common/linux/linux_work.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index