From patchwork Thu Jun 3 23:16:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 43705 X-Patchwork-Delegate: azanella@linux.vnet.ibm.com Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 67DA33990420 for ; Thu, 3 Jun 2021 23:36:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 67DA33990420 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1622763370; bh=MJxVvkNESDx801qd3HJkEje+VV1n1CK7vrilNmbHYek=; h=To:Subject:In-Reply-To:References:Date:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=Uv9Q7FTqOHjCy4eETtBuzqJxYDJUAjQAzbtfRHCxCbmsI6subJ+ksIi+cXFbMs5r0 6oOdQTV3glPu/gO/KASjKypXn2vmBvI8HjPobFDpUUHAoa7Xovlz+Zz9iWbjgpbWqS D+ssKKhT11sg2Lvtc9U779W2djYYtJtCom+HCWjI= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 814AD3990439 for ; Thu, 3 Jun 2021 23:16:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 814AD3990439 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-454-3gdrAv-TOOGOlcX_1rITag-1; Thu, 03 Jun 2021 19:16:55 -0400 X-MC-Unique: 3gdrAv-TOOGOlcX_1rITag-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B5C67801107 for ; Thu, 3 Jun 2021 23:16:54 +0000 (UTC) Received: from oldenburg.str.redhat.com (ovpn-113-228.ams2.redhat.com [10.36.113.228]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 440135D705 for ; Thu, 3 Jun 2021 23:16:53 +0000 (UTC) To: libc-alpha@sourceware.org Subject: [PATCH 24/35] Linux: Move mq_notify from librt to libc In-Reply-To: References: X-From-Line: 1fdd04cbda0827dc5963ff67742da101ab73b2d7 Mon Sep 17 00:00:00 2001 Message-Id: <1fdd04cbda0827dc5963ff67742da101ab73b2d7.1622761829.git.fweimer@redhat.com> Date: Fri, 04 Jun 2021 01:16:51 +0200 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Weimer via Libc-alpha From: Florian Weimer Reply-To: Florian Weimer Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" The symbol was moved using scripts/move-symbol-to-libc.py. An explicit call from fork into the mq_notify implementation replaces the previous use of pthread_atfork. --- include/mqueue.h | 4 ++ include/pthread.h | 3 + rt/Makefile | 2 +- rt/Versions | 4 +- sysdeps/nptl/fork.c | 3 + sysdeps/unix/sysv/linux/aarch64/libc.abilist | 2 + sysdeps/unix/sysv/linux/aarch64/librt.abilist | 1 - sysdeps/unix/sysv/linux/alpha/libc.abilist | 2 + sysdeps/unix/sysv/linux/alpha/librt.abilist | 1 - sysdeps/unix/sysv/linux/arc/libc.abilist | 2 + sysdeps/unix/sysv/linux/arc/librt.abilist | 1 - sysdeps/unix/sysv/linux/arm/be/libc.abilist | 2 + sysdeps/unix/sysv/linux/arm/be/librt.abilist | 1 - sysdeps/unix/sysv/linux/arm/le/libc.abilist | 2 + sysdeps/unix/sysv/linux/arm/le/librt.abilist | 1 - sysdeps/unix/sysv/linux/csky/libc.abilist | 2 + sysdeps/unix/sysv/linux/csky/librt.abilist | 1 - sysdeps/unix/sysv/linux/hppa/libc.abilist | 2 + sysdeps/unix/sysv/linux/hppa/librt.abilist | 1 - sysdeps/unix/sysv/linux/i386/libc.abilist | 2 + sysdeps/unix/sysv/linux/i386/librt.abilist | 1 - sysdeps/unix/sysv/linux/ia64/libc.abilist | 2 + sysdeps/unix/sysv/linux/ia64/librt.abilist | 1 - .../sysv/linux/m68k/coldfire/libc.abilist | 2 + .../sysv/linux/m68k/coldfire/librt.abilist | 1 - .../unix/sysv/linux/m68k/m680x0/libc.abilist | 2 + .../unix/sysv/linux/m68k/m680x0/librt.abilist | 1 - .../sysv/linux/microblaze/be/libc.abilist | 2 + .../sysv/linux/microblaze/be/librt.abilist | 1 - .../sysv/linux/microblaze/le/libc.abilist | 2 + .../sysv/linux/microblaze/le/librt.abilist | 1 - .../sysv/linux/mips/mips32/fpu/libc.abilist | 2 + .../unix/sysv/linux/mips/mips32/librt.abilist | 1 - .../sysv/linux/mips/mips32/nofpu/libc.abilist | 2 + .../unix/sysv/linux/mips/mips64/librt.abilist | 1 - .../sysv/linux/mips/mips64/n32/libc.abilist | 2 + .../sysv/linux/mips/mips64/n64/libc.abilist | 2 + sysdeps/unix/sysv/linux/mq_notify.c | 55 ++++++++----------- sysdeps/unix/sysv/linux/nios2/libc.abilist | 2 + sysdeps/unix/sysv/linux/nios2/librt.abilist | 1 - .../linux/powerpc/powerpc32/fpu/libc.abilist | 2 + .../linux/powerpc/powerpc32/librt.abilist | 1 - .../powerpc/powerpc32/nofpu/libc.abilist | 2 + .../linux/powerpc/powerpc64/be/libc.abilist | 2 + .../linux/powerpc/powerpc64/be/librt.abilist | 1 - .../linux/powerpc/powerpc64/le/libc.abilist | 2 + .../linux/powerpc/powerpc64/le/librt.abilist | 1 - .../unix/sysv/linux/riscv/rv32/libc.abilist | 2 + .../unix/sysv/linux/riscv/rv32/librt.abilist | 1 - .../unix/sysv/linux/riscv/rv64/libc.abilist | 2 + .../unix/sysv/linux/riscv/rv64/librt.abilist | 1 - .../unix/sysv/linux/s390/s390-32/libc.abilist | 2 + .../sysv/linux/s390/s390-32/librt.abilist | 1 - .../unix/sysv/linux/s390/s390-64/libc.abilist | 2 + .../sysv/linux/s390/s390-64/librt.abilist | 1 - sysdeps/unix/sysv/linux/sh/be/libc.abilist | 2 + sysdeps/unix/sysv/linux/sh/be/librt.abilist | 1 - sysdeps/unix/sysv/linux/sh/le/libc.abilist | 2 + sysdeps/unix/sysv/linux/sh/le/librt.abilist | 1 - .../sysv/linux/sparc/sparc32/libc.abilist | 2 + .../sysv/linux/sparc/sparc32/librt.abilist | 1 - .../sysv/linux/sparc/sparc64/libc.abilist | 2 + .../sysv/linux/sparc/sparc64/librt.abilist | 1 - .../unix/sysv/linux/x86_64/64/libc.abilist | 2 + .../unix/sysv/linux/x86_64/64/librt.abilist | 1 - .../unix/sysv/linux/x86_64/x32/libc.abilist | 2 + .../unix/sysv/linux/x86_64/x32/librt.abilist | 1 - 67 files changed, 100 insertions(+), 64 deletions(-) diff --git a/include/mqueue.h b/include/mqueue.h index 008589f0fa..2c40c1e3fc 100644 --- a/include/mqueue.h +++ b/include/mqueue.h @@ -15,6 +15,10 @@ hidden_proto (mq_setattr) # if PTHREAD_IN_LIBC libc_hidden_proto (mq_setattr) + +/* Called from fork so that the new subprocess re-creates the + notification thread if necessary. */ +void __mq_notify_fork_subprocess (void) attribute_hidden; # endif #include diff --git a/include/pthread.h b/include/pthread.h index a3e1cf51b0..b8167b8d69 100644 --- a/include/pthread.h +++ b/include/pthread.h @@ -13,6 +13,9 @@ libc_hidden_proto (__pthread_barrier_init) #endif extern int __pthread_barrier_wait (pthread_barrier_t *__barrier) __THROWNL __nonnull ((1)); +#if PTHREAD_IN_LIBC +libc_hidden_proto (__pthread_barrier_wait) +#endif /* This function is called to initialize the pthread library. */ extern void __pthread_initialize (void) __attribute__ ((weak)); diff --git a/rt/Makefile b/rt/Makefile index a1d5661216..2376415a38 100644 --- a/rt/Makefile +++ b/rt/Makefile @@ -30,7 +30,6 @@ routines = \ librt-routines = \ librt-compat \ - mq_notify \ mq_open \ mq_receive \ mq_send \ @@ -62,6 +61,7 @@ $(librt-routines-var) += \ lio_listio64 \ mq_close \ mq_getattr \ + mq_notify \ mq_setattr \ tests := tst-shm tst-timer tst-timer2 \ diff --git a/rt/Versions b/rt/Versions index 38f23c16ef..b3c9bba9ff 100644 --- a/rt/Versions +++ b/rt/Versions @@ -28,6 +28,7 @@ libc { %if PTHREAD_IN_LIBC mq_close; mq_getattr; + mq_notify; mq_setattr; %endif } @@ -58,6 +59,7 @@ libc { lio_listio64; mq_close; mq_getattr; + mq_notify; mq_setattr; %endif shm_open; @@ -112,9 +114,9 @@ librt { %if !PTHREAD_IN_LIBC mq_close; mq_getattr; + mq_notify; mq_setattr; %endif - mq_notify; mq_open; mq_receive; mq_send; diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c index 39ab797612..d6a0996b79 100644 --- a/sysdeps/nptl/fork.c +++ b/sysdeps/nptl/fork.c @@ -36,6 +36,7 @@ #include #include #include +#include static void fresetlockfiles (void) @@ -229,6 +230,8 @@ __libc_fork (void) /* Reset locks in the I/O code. */ _IO_list_resetlock (); + call_function_static_weak (__mq_notify_fork_subprocess); + call_function_static_weak (__nss_database_fork_subprocess, &nss_database_data); } diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist index e192480e09..368ed7453b 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist @@ -1359,6 +1359,7 @@ GLIBC_2.17 mprobe F GLIBC_2.17 mprotect F GLIBC_2.17 mq_close F GLIBC_2.17 mq_getattr F +GLIBC_2.17 mq_notify F GLIBC_2.17 mq_setattr F GLIBC_2.17 mrand48 F GLIBC_2.17 mrand48_r F @@ -2402,6 +2403,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/aarch64/librt.abilist b/sysdeps/unix/sysv/linux/aarch64/librt.abilist index 33b825d874..6cab033b12 100644 --- a/sysdeps/unix/sysv/linux/aarch64/librt.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/librt.abilist @@ -1,5 +1,4 @@ GLIBC_2.17 __mq_open_2 F -GLIBC_2.17 mq_notify F GLIBC_2.17 mq_open F GLIBC_2.17 mq_receive F GLIBC_2.17 mq_send F diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist index d937d5b1f8..d26f035f0a 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -2394,6 +2394,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2497,6 +2498,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/alpha/librt.abilist b/sysdeps/unix/sysv/linux/alpha/librt.abilist index 29f9030371..d85884d888 100644 --- a/sysdeps/unix/sysv/linux/alpha/librt.abilist +++ b/sysdeps/unix/sysv/linux/alpha/librt.abilist @@ -10,7 +10,6 @@ GLIBC_2.3.3 timer_delete F GLIBC_2.3.3 timer_getoverrun F GLIBC_2.3.3 timer_gettime F GLIBC_2.3.3 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist index 31f687ab4f..d8e431bc13 100644 --- a/sysdeps/unix/sysv/linux/arc/libc.abilist +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist @@ -1290,6 +1290,7 @@ GLIBC_2.32 mprobe F GLIBC_2.32 mprotect F GLIBC_2.32 mq_close F GLIBC_2.32 mq_getattr F +GLIBC_2.32 mq_notify F GLIBC_2.32 mq_setattr F GLIBC_2.32 mrand48 F GLIBC_2.32 mrand48_r F @@ -2161,6 +2162,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/librt.abilist index 4143924c8b..16864093a0 100644 --- a/sysdeps/unix/sysv/linux/arc/librt.abilist +++ b/sysdeps/unix/sysv/linux/arc/librt.abilist @@ -1,5 +1,4 @@ GLIBC_2.32 __mq_open_2 F -GLIBC_2.32 mq_notify F GLIBC_2.32 mq_open F GLIBC_2.32 mq_receive F GLIBC_2.32 mq_send F diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist index e49023b653..a97e9d40ae 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -236,6 +236,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F @@ -1652,6 +1653,7 @@ GLIBC_2.4 mprobe F GLIBC_2.4 mprotect F GLIBC_2.4 mq_close F GLIBC_2.4 mq_getattr F +GLIBC_2.4 mq_notify F GLIBC_2.4 mq_setattr F GLIBC_2.4 mrand48 F GLIBC_2.4 mrand48_r F diff --git a/sysdeps/unix/sysv/linux/arm/be/librt.abilist b/sysdeps/unix/sysv/linux/arm/be/librt.abilist index 019efdeb89..16c562cc57 100644 --- a/sysdeps/unix/sysv/linux/arm/be/librt.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/librt.abilist @@ -1,4 +1,3 @@ -GLIBC_2.4 mq_notify F GLIBC_2.4 mq_open F GLIBC_2.4 mq_receive F GLIBC_2.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist index 1e903842d2..0b957d1f10 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -233,6 +233,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F @@ -1649,6 +1650,7 @@ GLIBC_2.4 mprobe F GLIBC_2.4 mprotect F GLIBC_2.4 mq_close F GLIBC_2.4 mq_getattr F +GLIBC_2.4 mq_notify F GLIBC_2.4 mq_setattr F GLIBC_2.4 mrand48 F GLIBC_2.4 mrand48_r F diff --git a/sysdeps/unix/sysv/linux/arm/le/librt.abilist b/sysdeps/unix/sysv/linux/arm/le/librt.abilist index 019efdeb89..16c562cc57 100644 --- a/sysdeps/unix/sysv/linux/arm/le/librt.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/librt.abilist @@ -1,4 +1,3 @@ -GLIBC_2.4 mq_notify F GLIBC_2.4 mq_open F GLIBC_2.4 mq_receive F GLIBC_2.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist index 8fb5aaf4be..6f6bc16b0e 100644 --- a/sysdeps/unix/sysv/linux/csky/libc.abilist +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist @@ -1345,6 +1345,7 @@ GLIBC_2.29 mprobe F GLIBC_2.29 mprotect F GLIBC_2.29 mq_close F GLIBC_2.29 mq_getattr F +GLIBC_2.29 mq_notify F GLIBC_2.29 mq_setattr F GLIBC_2.29 mrand48 F GLIBC_2.29 mrand48_r F @@ -2345,6 +2346,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/csky/librt.abilist b/sysdeps/unix/sysv/linux/csky/librt.abilist index a44c501d49..cb268470a2 100644 --- a/sysdeps/unix/sysv/linux/csky/librt.abilist +++ b/sysdeps/unix/sysv/linux/csky/librt.abilist @@ -1,5 +1,4 @@ GLIBC_2.29 __mq_open_2 F -GLIBC_2.29 mq_notify F GLIBC_2.29 mq_open F GLIBC_2.29 mq_receive F GLIBC_2.29 mq_send F diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist index d3f2a9fbed..a5d44d7394 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -2208,6 +2208,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2299,6 +2300,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/hppa/librt.abilist b/sysdeps/unix/sysv/linux/hppa/librt.abilist index 3618d3e898..56e82a8a53 100644 --- a/sysdeps/unix/sysv/linux/hppa/librt.abilist +++ b/sysdeps/unix/sysv/linux/hppa/librt.abilist @@ -4,7 +4,6 @@ GLIBC_2.2 timer_delete F GLIBC_2.2 timer_getoverrun F GLIBC_2.2 timer_gettime F GLIBC_2.2 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index d23ded400b..7758073583 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -2389,6 +2389,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2483,6 +2484,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/i386/librt.abilist b/sysdeps/unix/sysv/linux/i386/librt.abilist index 3618d3e898..56e82a8a53 100644 --- a/sysdeps/unix/sysv/linux/i386/librt.abilist +++ b/sysdeps/unix/sysv/linux/i386/librt.abilist @@ -4,7 +4,6 @@ GLIBC_2.2 timer_delete F GLIBC_2.2 timer_getoverrun F GLIBC_2.2 timer_gettime F GLIBC_2.2 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist index a84e585a5a..ae6d041f13 100644 --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist @@ -2243,6 +2243,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2335,6 +2336,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/ia64/librt.abilist b/sysdeps/unix/sysv/linux/ia64/librt.abilist index 38edc31e90..1ec96c2786 100644 --- a/sysdeps/unix/sysv/linux/ia64/librt.abilist +++ b/sysdeps/unix/sysv/linux/ia64/librt.abilist @@ -9,7 +9,6 @@ GLIBC_2.3.3 timer_delete F GLIBC_2.3.3 timer_getoverrun F GLIBC_2.3.3 timer_gettime F GLIBC_2.3.3 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist index a8b6530236..9bbcd02ff2 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -237,6 +237,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F @@ -1636,6 +1637,7 @@ GLIBC_2.4 mprobe F GLIBC_2.4 mprotect F GLIBC_2.4 mq_close F GLIBC_2.4 mq_getattr F +GLIBC_2.4 mq_notify F GLIBC_2.4 mq_setattr F GLIBC_2.4 mrand48 F GLIBC_2.4 mrand48_r F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist index 019efdeb89..16c562cc57 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist @@ -1,4 +1,3 @@ -GLIBC_2.4 mq_notify F GLIBC_2.4 mq_open F GLIBC_2.4 mq_receive F GLIBC_2.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index 2099088d48..7ada87505b 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2332,6 +2332,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2426,6 +2427,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist index 3618d3e898..56e82a8a53 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist @@ -4,7 +4,6 @@ GLIBC_2.2 timer_delete F GLIBC_2.2 timer_getoverrun F GLIBC_2.2 timer_gettime F GLIBC_2.2 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist index 480542425a..86422132f3 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist @@ -1361,6 +1361,7 @@ GLIBC_2.18 mprobe F GLIBC_2.18 mprotect F GLIBC_2.18 mq_close F GLIBC_2.18 mq_getattr F +GLIBC_2.18 mq_notify F GLIBC_2.18 mq_setattr F GLIBC_2.18 mrand48 F GLIBC_2.18 mrand48_r F @@ -2396,6 +2397,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist index a03da76f76..039871a931 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/librt.abilist @@ -1,5 +1,4 @@ GLIBC_2.18 __mq_open_2 F -GLIBC_2.18 mq_notify F GLIBC_2.18 mq_open F GLIBC_2.18 mq_receive F GLIBC_2.18 mq_send F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist index f66c0d5641..6bab3fea30 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist @@ -1361,6 +1361,7 @@ GLIBC_2.18 mprobe F GLIBC_2.18 mprotect F GLIBC_2.18 mq_close F GLIBC_2.18 mq_getattr F +GLIBC_2.18 mq_notify F GLIBC_2.18 mq_setattr F GLIBC_2.18 mrand48 F GLIBC_2.18 mrand48_r F @@ -2393,6 +2394,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist index a03da76f76..039871a931 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/librt.abilist @@ -1,5 +1,4 @@ GLIBC_2.18 __mq_open_2 F -GLIBC_2.18 mq_notify F GLIBC_2.18 mq_open F GLIBC_2.18 mq_receive F GLIBC_2.18 mq_send F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index 173f533387..750d4e704c 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2300,6 +2300,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2391,6 +2392,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist index a249a4623f..7afe4e83cf 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/librt.abilist @@ -3,7 +3,6 @@ GLIBC_2.2 timer_delete F GLIBC_2.2 timer_getoverrun F GLIBC_2.2 timer_gettime F GLIBC_2.2 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index dd536cdd7a..13fc078266 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -2298,6 +2298,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2389,6 +2390,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist index a249a4623f..7afe4e83cf 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/librt.abilist @@ -3,7 +3,6 @@ GLIBC_2.2 timer_delete F GLIBC_2.2 timer_getoverrun F GLIBC_2.2 timer_gettime F GLIBC_2.2 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index ec9ea80650..f310320334 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -2306,6 +2306,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2397,6 +2398,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index 500cf81644..ea8a8d4a4e 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -2300,6 +2300,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2391,6 +2392,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c index e22850a910..473621f590 100644 --- a/sysdeps/unix/sysv/linux/mq_notify.c +++ b/sysdeps/unix/sysv/linux/mq_notify.c @@ -29,7 +29,7 @@ #include #include #include - +#include /* Defined in the kernel headers: */ #define NOTIFY_COOKIE_LEN 32 /* Length of the cookie used. */ @@ -75,7 +75,7 @@ change_sigmask (int how, sigset_t *oss) { sigset_t ss; sigfillset (&ss); - return pthread_sigmask (how, &ss, oss); + return __pthread_sigmask (how, &ss, oss); } @@ -93,7 +93,7 @@ notification_function (void *arg) (void) __pthread_barrier_wait (¬ify_barrier); /* Make the thread detached. */ - (void) pthread_detach (pthread_self ()); + (void) __pthread_detach (pthread_self ()); /* The parent thread has all signals blocked. This is probably a bit surprising for this thread. So we unblock all of them. */ @@ -125,8 +125,8 @@ helper_thread (void *arg) /* Just create the thread as instructed. There is no way to report a problem with creating a thread. */ pthread_t th; - if (__builtin_expect (pthread_create (&th, data.attr, - notification_function, &data) + if (__builtin_expect (__pthread_create (&th, data.attr, + notification_function, &data) == 0, 0)) /* Since we passed a pointer to DATA to the new thread we have to wait until it is done with it. */ @@ -135,7 +135,7 @@ helper_thread (void *arg) else if (data.raw[NOTIFY_COOKIE_LEN - 1] == NOTIFY_REMOVED) { /* The only state we keep is the copy of the thread attributes. */ - pthread_attr_destroy (data.attr); + __pthread_attr_destroy (data.attr); free (data.attr); } } @@ -143,8 +143,8 @@ helper_thread (void *arg) } -static void -reset_once (void) +void +__mq_notify_fork_subprocess (void) { once = PTHREAD_ONCE_INIT; } @@ -172,10 +172,10 @@ init_mq_netlink (void) { /* Create the helper thread. */ pthread_attr_t attr; - (void) pthread_attr_init (&attr); - (void) pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED); + (void) __pthread_attr_init (&attr); + (void) __pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED); /* We do not need much stack space, the bare minimum will be enough. */ - (void) pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr)); + (void) __pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr)); /* Temporarily block all signals so that the newly created thread inherits the mask. */ @@ -183,29 +183,13 @@ init_mq_netlink (void) int have_no_oss = change_sigmask (SIG_BLOCK, &oss); pthread_t th; - err = pthread_create (&th, &attr, helper_thread, NULL); + err = __pthread_create (&th, &attr, helper_thread, NULL); /* Reset the signal mask. */ if (!have_no_oss) - pthread_sigmask (SIG_SETMASK, &oss, NULL); - - (void) pthread_attr_destroy (&attr); + __pthread_sigmask (SIG_SETMASK, &oss, NULL); - if (err == 0) - { - static int added_atfork; - - if (added_atfork == 0 - && pthread_atfork (NULL, NULL, reset_once) != 0) - { - /* The child thread will call recv() which is a - cancellation point. */ - (void) pthread_cancel (th); - err = 1; - } - else - added_atfork = 1; - } + (void) __pthread_attr_destroy (&attr); } if (err != 0) @@ -219,7 +203,7 @@ init_mq_netlink (void) /* Register notification upon message arrival to an empty message queue MQDES. */ int -mq_notify (mqd_t mqdes, const struct sigevent *notification) +__mq_notify (mqd_t mqdes, const struct sigevent *notification) { /* Make sure the type is correctly defined. */ assert (sizeof (union notify_data) == NOTIFY_COOKIE_LEN); @@ -235,7 +219,7 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification) response. */ /* Initialize only once. */ - pthread_once (&once, init_mq_netlink); + __pthread_once (&once, init_mq_netlink); /* If we cannot create the netlink socket we cannot provide SIGEV_THREAD support. */ @@ -280,9 +264,14 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification) /* If it failed, free the allocated memory. */ if (retval != 0 && data.attr != NULL) { - pthread_attr_destroy (data.attr); + __pthread_attr_destroy (data.attr); free (data.attr); } return retval; } +versioned_symbol (libc, __mq_notify, mq_notify, GLIBC_2_34); +libc_hidden_ver (__mq_notify, mq_notify) +#if OTHER_SHLIB_COMPAT (librt, GLIBC_2_3_4, GLIBC_2_34) +compat_symbol (librt, __mq_notify, mq_notify, GLIBC_2_3_4); +#endif diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist index 5b22c05d1a..9331ef54cf 100644 --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist @@ -1404,6 +1404,7 @@ GLIBC_2.21 mprobe F GLIBC_2.21 mprotect F GLIBC_2.21 mq_close F GLIBC_2.21 mq_getattr F +GLIBC_2.21 mq_notify F GLIBC_2.21 mq_setattr F GLIBC_2.21 mrand48 F GLIBC_2.21 mrand48_r F @@ -2435,6 +2436,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/nios2/librt.abilist b/sysdeps/unix/sysv/linux/nios2/librt.abilist index 54faf2191a..552ee96b30 100644 --- a/sysdeps/unix/sysv/linux/nios2/librt.abilist +++ b/sysdeps/unix/sysv/linux/nios2/librt.abilist @@ -1,5 +1,4 @@ GLIBC_2.21 __mq_open_2 F -GLIBC_2.21 mq_notify F GLIBC_2.21 mq_open F GLIBC_2.21 mq_receive F GLIBC_2.21 mq_send F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist index a4f07abfcb..f09b309ea5 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -2346,6 +2346,7 @@ GLIBC_2.3.4 longjmp F GLIBC_2.3.4 makecontext F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2453,6 +2454,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist index 3618d3e898..56e82a8a53 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist @@ -4,7 +4,6 @@ GLIBC_2.2 timer_delete F GLIBC_2.2 timer_getoverrun F GLIBC_2.2 timer_gettime F GLIBC_2.2 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index 5f3f7e0a65..b3b4167fab 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -2379,6 +2379,7 @@ GLIBC_2.3.4 longjmp F GLIBC_2.3.4 makecontext F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2486,6 +2487,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist index 45da3fd0a5..bef39a8377 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist @@ -2192,6 +2192,7 @@ GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 longjmp F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2299,6 +2300,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist index 073df9d157..a7117238c4 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/librt.abilist @@ -8,7 +8,6 @@ GLIBC_2.3.3 timer_delete F GLIBC_2.3.3 timer_getoverrun F GLIBC_2.3.3 timer_gettime F GLIBC_2.3.3 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist index c21e33b002..73ad8e24f1 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist @@ -1447,6 +1447,7 @@ GLIBC_2.17 mprobe F GLIBC_2.17 mprotect F GLIBC_2.17 mq_close F GLIBC_2.17 mq_getattr F +GLIBC_2.17 mq_notify F GLIBC_2.17 mq_setattr F GLIBC_2.17 mrand48 F GLIBC_2.17 mrand48_r F @@ -2598,6 +2599,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist index 33b825d874..6cab033b12 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/librt.abilist @@ -1,5 +1,4 @@ GLIBC_2.17 __mq_open_2 F -GLIBC_2.17 mq_notify F GLIBC_2.17 mq_open F GLIBC_2.17 mq_receive F GLIBC_2.17 mq_send F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist index ec447c1929..793b3d7ff2 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist @@ -1292,6 +1292,7 @@ GLIBC_2.33 mprobe F GLIBC_2.33 mprotect F GLIBC_2.33 mq_close F GLIBC_2.33 mq_getattr F +GLIBC_2.33 mq_notify F GLIBC_2.33 mq_setattr F GLIBC_2.33 mrand48 F GLIBC_2.33 mrand48_r F @@ -2163,6 +2164,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist index 86456a362e..2877905086 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist @@ -1,5 +1,4 @@ GLIBC_2.33 __mq_open_2 F -GLIBC_2.33 mq_notify F GLIBC_2.33 mq_open F GLIBC_2.33 mq_receive F GLIBC_2.33 mq_send F diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist index 7996483bbc..442faab40d 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist @@ -1342,6 +1342,7 @@ GLIBC_2.27 mprobe F GLIBC_2.27 mprotect F GLIBC_2.27 mq_close F GLIBC_2.27 mq_getattr F +GLIBC_2.27 mq_notify F GLIBC_2.27 mq_setattr F GLIBC_2.27 mrand48 F GLIBC_2.27 mrand48_r F @@ -2363,6 +2364,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist index e9a7d2fe8a..79c4c5870f 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist @@ -1,5 +1,4 @@ GLIBC_2.27 __mq_open_2 F -GLIBC_2.27 mq_notify F GLIBC_2.27 mq_open F GLIBC_2.27 mq_receive F GLIBC_2.27 mq_send F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist index 25dd65a559..58167f046f 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -2345,6 +2345,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2451,6 +2452,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist index 3618d3e898..56e82a8a53 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist @@ -4,7 +4,6 @@ GLIBC_2.2 timer_delete F GLIBC_2.2 timer_getoverrun F GLIBC_2.2 timer_gettime F GLIBC_2.2 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist index fafa8db1e6..8bfa413e81 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist @@ -2233,6 +2233,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2336,6 +2337,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist index 6df861ffb6..7e2f744325 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist @@ -8,7 +8,6 @@ GLIBC_2.3.3 timer_delete F GLIBC_2.3.3 timer_getoverrun F GLIBC_2.3.3 timer_gettime F GLIBC_2.3.3 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist index 31731a61d8..312f0fd5fc 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -2212,6 +2212,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2306,6 +2307,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/sh/be/librt.abilist b/sysdeps/unix/sysv/linux/sh/be/librt.abilist index 3618d3e898..56e82a8a53 100644 --- a/sysdeps/unix/sysv/linux/sh/be/librt.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/librt.abilist @@ -4,7 +4,6 @@ GLIBC_2.2 timer_delete F GLIBC_2.2 timer_getoverrun F GLIBC_2.2 timer_gettime F GLIBC_2.2 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist index b96bdc0a90..a857b38453 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -2212,6 +2212,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2303,6 +2304,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/sh/le/librt.abilist b/sysdeps/unix/sysv/linux/sh/le/librt.abilist index 3618d3e898..56e82a8a53 100644 --- a/sysdeps/unix/sysv/linux/sh/le/librt.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/librt.abilist @@ -4,7 +4,6 @@ GLIBC_2.2 timer_delete F GLIBC_2.2 timer_getoverrun F GLIBC_2.2 timer_gettime F GLIBC_2.2 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index 49709c7654..e4c661632e 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -2343,6 +2343,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2446,6 +2447,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist index 31311e85b9..0990953ee9 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist @@ -5,7 +5,6 @@ GLIBC_2.2 timer_getoverrun F GLIBC_2.2 timer_gettime F GLIBC_2.2 timer_settime F GLIBC_2.3 __librt_version_placeholder F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist index 5c2a1a0235..ecec2ef922 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist @@ -2267,6 +2267,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2358,6 +2359,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist index 29f9030371..d85884d888 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist @@ -10,7 +10,6 @@ GLIBC_2.3.3 timer_delete F GLIBC_2.3.3 timer_getoverrun F GLIBC_2.3.3 timer_gettime F GLIBC_2.3.3 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index f006d8985f..4277301a21 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist @@ -2221,6 +2221,7 @@ GLIBC_2.3.4 getipv4sourcefilter F GLIBC_2.3.4 getsourcefilter F GLIBC_2.3.4 mq_close F GLIBC_2.3.4 mq_getattr F +GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_setattr F GLIBC_2.3.4 pthread_attr_getaffinity_np F GLIBC_2.3.4 pthread_attr_setaffinity_np F @@ -2314,6 +2315,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist index 0efa2e11fa..139cf285ec 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/librt.abilist @@ -8,7 +8,6 @@ GLIBC_2.3.3 timer_delete F GLIBC_2.3.3 timer_getoverrun F GLIBC_2.3.3 timer_gettime F GLIBC_2.3.3 timer_settime F -GLIBC_2.3.4 mq_notify F GLIBC_2.3.4 mq_open F GLIBC_2.3.4 mq_receive F GLIBC_2.3.4 mq_send F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist index b08c38fa7c..6d7a7f41a8 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist @@ -1366,6 +1366,7 @@ GLIBC_2.16 mprobe F GLIBC_2.16 mprotect F GLIBC_2.16 mq_close F GLIBC_2.16 mq_getattr F +GLIBC_2.16 mq_notify F GLIBC_2.16 mq_setattr F GLIBC_2.16 mrand48 F GLIBC_2.16 mrand48_r F @@ -2417,6 +2418,7 @@ GLIBC_2.34 lio_listio F GLIBC_2.34 lio_listio64 F GLIBC_2.34 mq_close F GLIBC_2.34 mq_getattr F +GLIBC_2.34 mq_notify F GLIBC_2.34 mq_setattr F GLIBC_2.34 mtx_destroy F GLIBC_2.34 mtx_init F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist index dc15c9057f..db976a6c97 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist @@ -1,5 +1,4 @@ GLIBC_2.16 __mq_open_2 F -GLIBC_2.16 mq_notify F GLIBC_2.16 mq_open F GLIBC_2.16 mq_receive F GLIBC_2.16 mq_send F