<div dir="ltr"><div>Hi Jonathan,</div><div><br></div><div>Thanks for letting me know. The patch isn't in a hurry, so it's good for me to discuss this patch after Mathieu returns.</div><div><br></div><div><br></div><div>Thanks,</div><div>--Junchang</div><br><div class="gmail_quote"><div class="gmail_attr" dir="ltr">On Wed, Jul 10, 2019 at 11:14 PM Jonathan Rajotte-Julien <<a href="mailto:jonathan.rajotte-julien@efficios.com">jonathan.rajotte-julien@efficios.com</a>> wrote:<br></div><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">Hi Junchang,<br>
<br>
Thanks for contributing to URCU.<br>
<br>
I just wanted to let you know that Mathieu is currently on vacation for ~2 weeks<br>
so do not expect much feedback until his return.<br>
<br>
Cheers<br>
<br>
On Wed, Jul 10, 2019 at 11:28:06AM +0800, Junchang Wang wrote:<br>
> Hi Mathieu and the list,<br>
> <br>
> I'm recently using userspace-rcu to build lock-free data structures. Thanks for<br>
> sharing this excellent project!<br>
> <br>
> In building a hash table, I am looking for an ordered singly linked list<br>
> that is lock-free. It seems such a list is missing in userspace-rcu. I<br>
> discussed this with Paul in the mailing list of perfbook, and he kindly<br>
> suggested me to submit my implementation to userspace-rcu. So here is the<br>
> RFC. Any comments and suggestions are warmly welcome.<br>
> <br>
> This singly linked list is based on the following research paper:<br>
>  - Maged M. Michael. High performance dynamic lock-free hash tables<br>
>    and list-based sets. In Proceedings of the fourteenth annual ACM<br>
>    symposium on Parallel algorithms and architectures, ACM Press,<br>
>    (2002), 73-82.<br>
> <br>
> And this implementation has the following unique features:<br>
>  (1) Insert, Delete, and Find operations are protected by RCU read_lock,<br>
>      such that the existence guarantees are provided by the RCU mechanism,<br>
>      and that no special memory management schemes (e.g., hazard pointers)<br>
>      is required anymore.<br>
>  (2) The use of the RCU mechanism can naturally prevent the ABA problem,<br>
>      such that no flag field is required in this implementation. Hence,<br>
>      we save a long integer (typically 8 bytes) for each node.<br>
> <br>
> This is my first patch to this mailing list, so please let me know if<br>
> I messed anything up. Any comments and suggestions are warmly welcome.<br>
> <br>
> Thanks,<br>
> --Junchang<br>
> <br>
> Junchang Wang (4):<br>
>   userspace-rcu: Add lock-free singly linked list rculflist<br>
>   userspace-rcu: Add sample code of rculflist<br>
>   userspace-rcu: Update Makefile.am to include rculflist into the<br>
>     project<br>
>   userspace-rcu: Add a brief description of rculflist in cds-api.md<br>
> <br>
>  doc/cds-api.md                                     |   7 +<br>
>  doc/examples/Makefile.am                           |  13 +-<br>
>  .../rculflist/Makefile.cds_lflist_delete_rcu       |  21 ++<br>
>  .../rculflist/Makefile.cds_lflist_find_rcu         |  21 ++<br>
>  .../rculflist/Makefile.cds_lflist_insert_rcu       |  21 ++<br>
>  doc/examples/rculflist/cds_lflist_delete_rcu.c     | 100 ++++++++<br>
>  doc/examples/rculflist/cds_lflist_find_rcu.c       |  96 +++++++<br>
>  doc/examples/rculflist/cds_lflist_insert_rcu.c     |  66 +++++<br>
>  include/Makefile.am                                |   1 +<br>
>  include/urcu/cds.h                                 |   1 +<br>
>  include/urcu/rculflist.h                           | 279 +++++++++++++++++++++<br>
>  11 files changed, 625 insertions(+), 1 deletion(-)<br>
>  create mode 100644 doc/examples/rculflist/Makefile.cds_lflist_delete_rcu<br>
>  create mode 100644 doc/examples/rculflist/Makefile.cds_lflist_find_rcu<br>
>  create mode 100644 doc/examples/rculflist/Makefile.cds_lflist_insert_rcu<br>
>  create mode 100644 doc/examples/rculflist/cds_lflist_delete_rcu.c<br>
>  create mode 100644 doc/examples/rculflist/cds_lflist_find_rcu.c<br>
>  create mode 100644 doc/examples/rculflist/cds_lflist_insert_rcu.c<br>
>  create mode 100644 include/urcu/rculflist.h<br>
> <br>
> -- <br>
> 2.7.4<br>
> <br>
> _______________________________________________<br>
> lttng-dev mailing list<br>
> <a target="_blank" href="mailto:lttng-dev@lists.lttng.org">lttng-dev@lists.lttng.org</a><br>
> <a target="_blank" rel="noreferrer" href="https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev">https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev</a><br>
<br>
-- <br>
Jonathan Rajotte-Julien<br>
EfficiOS<br>
</blockquote></div></div>