Merge branch '3130-cleanup-pthread-api-usage-v9_18' into 'v9_18'
Remove unused functions from isc_thread API See merge request isc-projects/bind9!5808
This commit is contained in:
@@ -1,17 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
set -e
|
||||
|
||||
rm -f ps.out
|
||||
rm -f ns1/named.conf ns1/managed-keys.* ns1/named.run ns1/named.memstats
|
||||
@@ -1,20 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
*
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
options {
|
||||
query-source address 10.53.0.1;
|
||||
port @PORT@;
|
||||
pid-file "named.pid";
|
||||
listen-on { 10.53.0.1; };
|
||||
listen-on-v6 { none; };
|
||||
};
|
||||
@@ -1,37 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
set -e
|
||||
|
||||
# shellcheck source=conf.sh
|
||||
. ../conf.sh
|
||||
|
||||
case $(uname) in
|
||||
Linux*)
|
||||
;;
|
||||
*)
|
||||
echo_i "cpu test only runs on Linux"
|
||||
exit 255
|
||||
;;
|
||||
esac
|
||||
|
||||
# TASKSET will be an empty string if no taskset program was found.
|
||||
TASKSET=$(command -v "taskset" || true)
|
||||
if ! test -x "$TASKSET" ; then
|
||||
exit 255
|
||||
fi
|
||||
|
||||
if ! $TASKSET fff0 true > /dev/null 2>&1; then
|
||||
echo_i "taskset failed"
|
||||
exit 255
|
||||
fi
|
||||
@@ -1,21 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
# shellcheck source=conf.sh
|
||||
. ../conf.sh
|
||||
|
||||
set -e
|
||||
|
||||
$SHELL clean.sh
|
||||
|
||||
copy_setports ns1/named.conf.in ns1/named.conf
|
||||
@@ -1,48 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
# shellcheck source=conf.sh
|
||||
. ../conf.sh
|
||||
|
||||
status=0
|
||||
n=0
|
||||
|
||||
n=$((n+1))
|
||||
echo_i "stop server ($n)"
|
||||
ret=0
|
||||
$PERL ../stop.pl cpu ns1 || ret=1
|
||||
test "$ret" -eq 0 || echo_i "failed"
|
||||
status=$((status+ret))
|
||||
|
||||
n=$((n+1))
|
||||
echo_i "start server with taskset ($n)"
|
||||
ret=0
|
||||
start_server --noclean --taskset fff0 --restart --port "${PORT}" cpu ns1 || ret=1
|
||||
test "$ret" -eq 0 || echo_i "failed"
|
||||
status=$((status+ret))
|
||||
|
||||
n=$((n+1))
|
||||
echo_i "check ps output ($n)"
|
||||
ret=0
|
||||
ps -T -o pid,psr,time,comm -e > ps.out
|
||||
pid=$(cat ns1/named.pid)
|
||||
echo_i "pid=$pid"
|
||||
psr=$(awk -v pid="$pid" '$1 == pid && $4 == "isc-net-0000" {print $2}' < ps.out)
|
||||
echo_i "psr=$psr"
|
||||
# The next available cpu relative to the existing affinity mask is 4.
|
||||
test "$psr" -eq 4 || ret=1
|
||||
test "$ret" -eq 0 || echo_i "failed"
|
||||
status=$((status+ret))
|
||||
|
||||
echo_i "exit status: $status"
|
||||
[ $status -eq 0 ] || exit 1
|
||||
@@ -538,10 +538,6 @@ AC_CHECK_HEADERS([sched.h])
|
||||
AC_SEARCH_LIBS([sched_yield],[rt])
|
||||
AC_CHECK_FUNCS([sched_yield pthread_yield pthread_yield_np])
|
||||
|
||||
AC_CHECK_HEADERS([sys/cpuset.h])
|
||||
AC_CHECK_HEADERS([sys/procset.h])
|
||||
AC_CHECK_FUNCS([pthread_setaffinity_np cpuset_setaffinity processor_bind sched_setaffinity])
|
||||
|
||||
# Look for functions relating to thread naming
|
||||
AC_CHECK_FUNCS([pthread_setname_np pthread_set_name_np])
|
||||
AC_CHECK_HEADERS([pthread_np.h], [], [], [#include <pthread.h>])
|
||||
|
||||
@@ -42,18 +42,12 @@ isc_thread_create(isc_threadfunc_t, isc_threadarg_t, isc_thread_t *);
|
||||
void
|
||||
isc_thread_join(isc_thread_t thread, isc_threadresult_t *result);
|
||||
|
||||
void
|
||||
isc_thread_setconcurrency(unsigned int level);
|
||||
|
||||
void
|
||||
isc_thread_yield(void);
|
||||
|
||||
void
|
||||
isc_thread_setname(isc_thread_t thread, const char *name);
|
||||
|
||||
isc_result_t
|
||||
isc_thread_setaffinity(int cpu);
|
||||
|
||||
#define isc_thread_self (uintptr_t) pthread_self
|
||||
|
||||
ISC_LANG_ENDDECLS
|
||||
|
||||
105
lib/isc/thread.c
105
lib/isc/thread.c
@@ -97,15 +97,6 @@ isc_thread_join(isc_thread_t thread, isc_threadresult_t *result) {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __NetBSD__
|
||||
#define pthread_setconcurrency(a) (void)a /* nothing */
|
||||
#endif /* ifdef __NetBSD__ */
|
||||
|
||||
void
|
||||
isc_thread_setconcurrency(unsigned int level) {
|
||||
(void)pthread_setconcurrency(level);
|
||||
}
|
||||
|
||||
void
|
||||
isc_thread_setname(isc_thread_t thread, const char *name) {
|
||||
#if defined(HAVE_PTHREAD_SETNAME_NP) && !defined(__APPLE__)
|
||||
@@ -136,99 +127,3 @@ isc_thread_yield(void) {
|
||||
pthread_yield_np();
|
||||
#endif /* if defined(HAVE_SCHED_YIELD) */
|
||||
}
|
||||
|
||||
#if defined(HAVE_CPUSET_SETAFFINITY) || defined(HAVE_PTHREAD_SETAFFINITY_NP)
|
||||
#if defined(HAVE_CPUSET_SETAFFINITY)
|
||||
static int
|
||||
getaffinity(cpuset_t *set) {
|
||||
return (cpuset_getaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, -1,
|
||||
sizeof(*set), set));
|
||||
}
|
||||
static int
|
||||
issetaffinity(int cpu, cpuset_t *set) {
|
||||
return ((cpu >= CPU_SETSIZE) ? -1 : CPU_ISSET(cpu, set) ? 1 : 0);
|
||||
}
|
||||
static int
|
||||
setaffinity(int cpu, cpuset_t *set) {
|
||||
CPU_ZERO(set);
|
||||
CPU_SET(cpu, set);
|
||||
return (cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID, -1,
|
||||
sizeof(*set), set));
|
||||
}
|
||||
#elif defined(__NetBSD__)
|
||||
static int
|
||||
getaffinity(cpuset_t *set) {
|
||||
return (pthread_getaffinity_np(pthread_self(), cpuset_size(set), set));
|
||||
}
|
||||
static int
|
||||
issetaffinity(int cpu, cpuset_t *set) {
|
||||
return (cpuset_isset(cpu, set));
|
||||
}
|
||||
static int
|
||||
setaffinity(int cpu, cpuset_t *set) {
|
||||
cpuset_zero(set);
|
||||
cpuset_set(cpu, set);
|
||||
return (pthread_setaffinity_np(pthread_self(), cpuset_size(set), set));
|
||||
}
|
||||
#else /* linux ? */
|
||||
static int
|
||||
getaffinity(cpu_set_t *set) {
|
||||
return (pthread_getaffinity_np(pthread_self(), sizeof(*set), set));
|
||||
}
|
||||
static int
|
||||
issetaffinity(int cpu, cpu_set_t *set) {
|
||||
return ((cpu >= CPU_SETSIZE) ? -1 : CPU_ISSET(cpu, set) ? 1 : 0);
|
||||
}
|
||||
static int
|
||||
setaffinity(int cpu, cpu_set_t *set) {
|
||||
CPU_ZERO(set);
|
||||
CPU_SET(cpu, set);
|
||||
return (pthread_setaffinity_np(pthread_self(), sizeof(*set), set));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
isc_result_t
|
||||
isc_thread_setaffinity(int cpu) {
|
||||
#if defined(HAVE_CPUSET_SETAFFINITY) || defined(HAVE_PTHREAD_SETAFFINITY_NP)
|
||||
int cpu_id = -1, cpu_aff_ok_counter = -1, n;
|
||||
#if defined(HAVE_CPUSET_SETAFFINITY)
|
||||
cpuset_t _set, *set = &_set;
|
||||
#define cpuset_destroy(x) ((void)0)
|
||||
#elif defined(__NetBSD__)
|
||||
cpuset_t *set = cpuset_create();
|
||||
if (set == NULL) {
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
#else /* linux? */
|
||||
cpu_set_t _set, *set = &_set;
|
||||
#define cpuset_destroy(x) ((void)0)
|
||||
#endif
|
||||
|
||||
if (getaffinity(set) != 0) {
|
||||
cpuset_destroy(set);
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
while (cpu_aff_ok_counter < cpu) {
|
||||
cpu_id++;
|
||||
if ((n = issetaffinity(cpu_id, set)) > 0) {
|
||||
cpu_aff_ok_counter++;
|
||||
} else if (n < 0) {
|
||||
cpuset_destroy(set);
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
}
|
||||
if (setaffinity(cpu_id, set) != 0) {
|
||||
cpuset_destroy(set);
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
cpuset_destroy(set);
|
||||
#elif defined(HAVE_PROCESSOR_BIND)
|
||||
if (processor_bind(P_LWPID, P_MYID, cpu, NULL) != 0) {
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
#else /* if defined(HAVE_CPUSET_SETAFFINITY) */
|
||||
UNUSED(cpu);
|
||||
#endif /* if defined(HAVE_CPUSET_SETAFFINITY) */
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user