⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nscd_setup_thread.c

📁 glibc 库, 不仅可以学习使用库函数,还可以学习函数的具体实现,是提高功力的好资料
💻 C
字号:
/* Setup of nscd worker threads.  Linux verison.   Copyright (C) 2004, 2005 Free Software Foundation, Inc.   This file is part of the GNU C Library.   Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License version 2 as   published by the Free Software Foundation.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software Foundation,   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */#include <string.h>#include <unistd.h>#include <nscd.h>#include <sysdep.h>voidsetup_thread (struct database_dyn *db){#ifdef __NR_set_tid_address  /* Only supported when NPTL is used.  */  char buf[100];  if (confstr (_CS_GNU_LIBPTHREAD_VERSION, buf, sizeof (buf)) >= sizeof (buf)      || strncmp (buf, "NPTL", 4) != 0)    return;  /* Do not try this at home, kids.  We play with the SETTID address     even thought the process is multi-threaded.  This can only work     since none of the threads ever terminates.  */  INTERNAL_SYSCALL_DECL (err);  int r = INTERNAL_SYSCALL (set_tid_address, err, 1,			    &db->head->nscd_certainly_running);  if (!INTERNAL_SYSCALL_ERROR_P (r, err))    /* We know the kernel can reset this field when nscd terminates.       So, set the field to a nonzero value which indicates that nscd       is certainly running and clients can skip the test.  */    db->head->nscd_certainly_running = 1;#endif}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -