summaryrefslogtreecommitdiff
path: root/common/netd/libnetdutils/include/netdutils/ThreadUtil.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/netd/libnetdutils/include/netdutils/ThreadUtil.h')
-rw-r--r--common/netd/libnetdutils/include/netdutils/ThreadUtil.h83
1 files changed, 0 insertions, 83 deletions
diff --git a/common/netd/libnetdutils/include/netdutils/ThreadUtil.h b/common/netd/libnetdutils/include/netdutils/ThreadUtil.h
deleted file mode 100644
index 62e6f70c..00000000
--- a/common/netd/libnetdutils/include/netdutils/ThreadUtil.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef NETDUTILS_THREADUTIL_H
-#define NETDUTILS_THREADUTIL_H
-
-#include <pthread.h>
-#include <memory>
-
-#include <android-base/logging.h>
-
-namespace android {
-namespace netdutils {
-
-struct scoped_pthread_attr {
- scoped_pthread_attr() { pthread_attr_init(&attr); }
- ~scoped_pthread_attr() { pthread_attr_destroy(&attr); }
-
- int detach() { return -pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); }
-
- pthread_attr_t attr;
-};
-
-inline void setThreadName(std::string name) {
- // MAX_TASK_COMM_LEN=16 is not exported by bionic.
- const size_t MAX_TASK_COMM_LEN = 16;
-
- // Crop name to 16 bytes including the NUL byte, as required by pthread_setname_np()
- if (name.size() >= MAX_TASK_COMM_LEN) name.resize(MAX_TASK_COMM_LEN - 1);
-
- if (int ret = pthread_setname_np(pthread_self(), name.c_str()); ret != 0) {
- LOG(WARNING) << "Unable to set thread name to " << name << ": " << strerror(ret);
- }
-}
-
-template <typename T>
-inline void* runAndDelete(void* obj) {
- std::unique_ptr<T> handler(reinterpret_cast<T*>(obj));
- setThreadName(handler->threadName().c_str());
- handler->run();
- return nullptr;
-}
-
-template <typename T>
-inline int threadLaunch(T* obj) {
- if (obj == nullptr) {
- return -EINVAL;
- }
-
- scoped_pthread_attr scoped_attr;
-
- int rval = scoped_attr.detach();
- if (rval != 0) {
- return rval;
- }
-
- pthread_t thread;
- rval = pthread_create(&thread, &scoped_attr.attr, &runAndDelete<T>, obj);
- if (rval != 0) {
- LOG(WARNING) << __func__ << ": pthread_create failed: " << rval;
- return -rval;
- }
-
- return rval;
-}
-
-} // namespace netdutils
-} // namespace android
-
-#endif // NETDUTILS_THREADUTIL_H