From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/12310 Path: news.gmane.org!.POSTED!not-for-mail From: Jens Gustedt Newsgroups: gmane.linux.lib.musl.general Subject: [PATCH 0/7] V3 of the new lock algorithm Date: Wed, 3 Jan 2018 14:20:18 +0100 Message-ID: Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org X-Trace: blaine.gmane.org 1514986896 18198 195.159.176.226 (3 Jan 2018 13:41:36 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 3 Jan 2018 13:41:36 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-12326-gllmg-musl=m.gmane.org@lists.openwall.com Wed Jan 03 14:41:32 2018 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.84_2) (envelope-from ) id 1eWjIQ-0004R1-Id for gllmg-musl@m.gmane.org; Wed, 03 Jan 2018 14:41:30 +0100 Original-Received: (qmail 1836 invoked by uid 550); 3 Jan 2018 13:43:30 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 1796 invoked from network); 3 Jan 2018 13:43:30 -0000 X-IronPort-AV: E=Sophos;i="5.45,501,1508796000"; d="scan'208";a="307521874" Resent-Date: Wed, 3 Jan 2018 14:43:17 +0100 Resent-From: Jens Gustedt Resent-Message-ID: <20180103144317.0223756a@inria.fr> Resent-To: musl Xref: news.gmane.org gmane.linux.lib.musl.general:12310 Archived-At: This patch series implements and applies the new internal lock algorithm. Patch 1 is the lock implementation itself. I hope this is fit for 1.19, now. The patches 2-7 do some clean up and apply this lock algorithm to two fields, where we had specialized lock implementations before: condition variables and malloc. In all of this I am still a bit uncomfortable with the double syscalls to futex functions. We do that just because some older Linux versions might not implement private futexes. I'd prefer if that could be replaced by a read to a central variable instead of having a second (conditional) syscall. Such a variable could be initialized during thread-library initialization, I think. Jens Gustedt (7): a new lock algorithm with lock value and congestion count in the same atomic int consistently use the LOCK an UNLOCK macros revise the definition of multiple basic locks in the code separate the fast parts of __lock and __unlock into a .h file that may be used by other TU use the new lock algorithm for malloc implement __unlock_requeue implement the local lock for condition variables with the new lock feature src/dirent/__dirent.h | 2 +- src/exit/at_quick_exit.c | 2 +- src/exit/atexit.c | 2 +- src/internal/__lock.h | 29 ++++++++++++++++ src/internal/libc.h | 3 ++ src/internal/pthread_impl.h | 10 ++++-- src/locale/dcngettext.c | 2 +- src/locale/locale_map.c | 2 +- src/locale/setlocale.c | 2 +- src/malloc/lite_malloc.c | 2 +- src/malloc/malloc.c | 38 ++++++++------------- src/misc/syslog.c | 2 +- src/prng/random.c | 2 +- src/stdio/ofl.c | 2 +- src/thread/__lock.c | 66 +++++++++++++++++++++++++++++++++---- src/thread/pthread_atfork.c | 2 +- src/thread/pthread_cond_timedwait.c | 53 ++++++++++------------------- src/thread/pthread_create.c | 6 ++-- src/thread/pthread_detach.c | 5 ++- src/thread/pthread_getschedparam.c | 4 +-- src/thread/pthread_kill.c | 4 +-- src/thread/pthread_setschedparam.c | 4 +-- src/thread/pthread_setschedprio.c | 4 +-- src/thread/sem_open.c | 2 +- src/thread/synccall.c | 2 +- src/time/__tz.c | 2 +- 26 files changed, 156 insertions(+), 98 deletions(-) create mode 100644 src/internal/__lock.h -- 2.15.1