From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753943AbcAGXil (ORCPT ); Thu, 7 Jan 2016 18:38:41 -0500 Received: from mail-bn1on0056.outbound.protection.outlook.com ([157.56.110.56]:60494 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752721AbcAGXij (ORCPT ); Thu, 7 Jan 2016 18:38:39 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: , , , CC: , , , , , , , , , , , , , Subject: [PATCH v6 07/21] thread: move thread bits accessors to separated file Date: Fri, 8 Jan 2016 02:34:25 +0300 Message-ID: <1452209679-19445-8-git-send-email-ynorov@caviumnetworks.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1452209679-19445-1-git-send-email-ynorov@caviumnetworks.com> References: <1452209679-19445-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [95.143.213.121] X-ClientProxiedBy: AM2PR09CA0016.eurprd09.prod.outlook.com (25.161.22.154) To BY2PR07MB615.namprd07.prod.outlook.com (10.141.222.150) X-Microsoft-Exchange-Diagnostics: 1;BY2PR07MB615;2:ZcrOJzfFcolQovrH6lffZvvrsikkHuFMhCLyVixvPPTQohds+y3am+f/BQIdIMF1+Uqr5x0PRj3TqOdbVEuYDu+FOtzGpbCk2Gfor4GI6uJRhPhbKMdc6h6TEddGPfs6KCvyCt3TkjrexszvwxrxFQ==;3:dH0gFcGufCAxiAanXEyoKwBaT5pzn9LtzMoamje21jFTRvTPJZnVG+6LrXvk0pyMZgp/BYYyW1vwVq81JUGaeZqmpiR2CATJcVaX1iBxQ1ImpQF0eeoBlPlEP+0m1IFT;25:KPg8J5+1O9tsRjzQ/CqGH0B4k8upNORO8COSrPdscArBoJ3uqJCW2xc2Cgqb9qGNRnA8XoH5BI92Mx8B2jbsjBvvsphH7tZ8A4ubafg8ORphQfTDTiRdcGRPkvs8SCPqRwX4VOkKiJp+OZMNAW63E6Qe6IpVwzcwjM4XxKRQOQlbo2Q889Tq7+KRATUNmTQ1c7nH77ERGMm493qbPmecAaGv3N7dE6egtMm09cgqrCT8cMaYpoGbT+lLDuqPeu1i X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR07MB615; X-MS-Office365-Filtering-Correlation-Id: b43b8586-1fff-4d48-d8a5-08d317bba9b4 X-Microsoft-Exchange-Diagnostics: 1;BY2PR07MB615;20:NXZbVHBmovaP0vxTk6+oRqr95fZzoG94PeK/k9ArY3rBq7QYcjsjTSpHSfBKlWPUqPi0mfEPzn+1EMqZXvmxRr6p3IFKA+LQFpIbl2tnXuNJ1fLJ0AbQyyNHr2Pp9H3tPxJ70eT3ZfDeTuMxEDtzZ9Y308YNRN6p+bg4UO0ARCjbMugdH76zOwYcH0Fk3YzQZKH3+OtKcGSuolsMjq8PVWAEN+yCQ6lS/Nek4Vo1hwcdQGzeIy9PCLb0KFtYTIP+AUePTWEahPxIiqk5pfMrUo3nfCeaRNLqMCteRPFvEdUDRnj7y45b0Gt+c8mT1tnPAZs6PFRCboKZ+kXbd9979j3F6QodCPaXlM2YEbYDcDe8fhgGLIQLC/gMCldccAstMZYgnsNd0TOIubS8G5ppaWgBx0f/HNEkF8Xjre40nQoDmUxn0lr94Fv1iEo1eBAz/ZfFn+BPwIdbzWpjRxpl4dNCbiZFNOo3l5+C0rO3V5jaGVu5uu1mL1MWAtne3TCEeUcNqboIfmb9/rEISZryqSghSw4AYp3LRkX4sVLNaxcBXAxsfJT4vnvJI3Q3tvJiOejPZm3uc8y0DKnDJTbLc5W+Cmi+DDX0jDHDi/VkE/M= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236414709691187); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(520078)(5005006)(3002001)(10201501046);SRVR:BY2PR07MB615;BCL:0;PCL:0;RULEID:;SRVR:BY2PR07MB615; X-Microsoft-Exchange-Diagnostics: 1;BY2PR07MB615;4:7aJRSYYSV5R25+tBvUyPxQuvrDUvCNRbWNMVKJE4z649RbzKO3fYJypxcjsZn6AfxKhEESA8LnL4TaVpKdwzZt1qV9inEvG+EZX5EpYJPBmqjyzdAoHssO4gAm7akeq5wgC/HYHjBVGnZTZyNtPjAHGu9nSZ7J8TWR37wdIfjQ3gM7iYoXci1KSWi2kxM05kIbIu3aNf87Jg0AhtIYhX9RGL7oR3P7e+2RamYdAL5y7fM0eKJCVqnw3mwtAt/AnyFpnARHcJSdl6TYkwUZA/HJM3IVCih/0ori7i5DSRWDt+6YdgE8j21cdkhsdRRqJ9q26tuUmGMyE7PKkiTYajpsqMjhVZ0LbvqyOVUEruym56AP7/oq3gGSOxeHDdCEGVYm5dJGUIJQwM3bGzAVFzvzrrDXxBA9z+kb0cqzaohUw= X-Forefront-PRVS: 0814A2C7A3 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(6069001)(199003)(189002)(105586002)(1096002)(77096005)(189998001)(106356001)(42186005)(97736004)(5001770100001)(5003940100001)(586003)(2950100001)(5004730100002)(50466002)(101416001)(2906002)(81156007)(5001960100002)(92566002)(5008740100001)(4326007)(2201001)(50226001)(19580405001)(40100003)(229853001)(76176999)(47776003)(122386002)(50986999)(19580395003)(66066001)(87976001)(3846002)(48376002)(76506005)(6116002)(36756003)(33646002)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:BY2PR07MB615;H:localhost;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR07MB615;23:yao3UGRBElK1V2wRhgniJYS0hgs29EBNI0eYEuYqxQ?= =?us-ascii?Q?rjdbff3SRcRIVB64t6C04i583AzR8Xyil+RmVmGI6/MTDFcK+hgvbw1KjgAx?= =?us-ascii?Q?qHHjgZFgCcSi5UkECqQNHgsCM8nQ7s7twQHx2SOmwGGjQ0cRS3Qv0/zVOTZH?= =?us-ascii?Q?BMrb0B+KDsuOEYEHMnxz9e7Z33svpVIm4tEFsim6eQujRpKLxeEFBYvTnqJY?= =?us-ascii?Q?cD/bVdJK/ojPlEBZ4q9ApMedrEdOMcV+CBEz8L/6e1/D4L1KbV3cdWhgvwDq?= =?us-ascii?Q?HataTOUPSwsWcwoitK4qSCq8kBq3j2c2NzmvWeQL73JmDO/hgKANZ1XeyjBx?= =?us-ascii?Q?q2QidrRV2b5qnqkobR2Tt37UlAC1xbxjCnQIScAt4TUzuLaWKSX/wjF2u6JB?= =?us-ascii?Q?NUXT8pRhvGczRDAYOzwg5KmNXNJmP8myvZtuudRaZyW6PSG3AX9mDZBbOkEd?= =?us-ascii?Q?auHoMDoXQzK5VyY8/0t5AHyV10IOFz7frD5ry8VfLfqKp9ejtbprsfRvuf/n?= =?us-ascii?Q?rfW0rMfwckYFwaflYePXP+7n8ei5z9ZcsZkDUQxrgIxS5Uhcy9+IhCyVsc9f?= =?us-ascii?Q?OKg06pzFhI7K4k+bzYcfJ5RprAKK5e/Ju764+eqnMMtkLwKlUN77AAj55Jua?= =?us-ascii?Q?iZeXkmMnKwdajkmouHoMo5JXaC1iCLXy61swM+GDNp3unhHSvYsoiVs1EujV?= =?us-ascii?Q?OsMJbBi1DCoA3ycuLFqVhRYNm1jlQHAtUkbPJo48UiFlA+GSmpoZrcENz+Pz?= =?us-ascii?Q?JsYrcbjhj79XlWKl/Xav3vQcxV58QIoMkasW4jFAQk8scAg7EoH1hXGKyjXU?= =?us-ascii?Q?RS4SgkLrLlD7bnZT7HowzMEKjN9GzL8EGL3K9ugVeWQ7jyvlT4dninBV7pFm?= =?us-ascii?Q?dv3jGBaW3ZcCalmpZFFKU1VIZ3ETzsMmHLr5ZL6iIpSrPKJeddVe5T9IM1+v?= =?us-ascii?Q?1jDICdqpENkXbcWMcxSzKXes5U1UYOFPkqpiyDl8RHmf70ADweSb3IXbcj7q?= =?us-ascii?Q?4fMjSAFt2EzNn3v3eYYhaL0PVy9WDt8S+zsZ3kAyNIvpm/JouViT2jEJUtA6?= =?us-ascii?Q?igEavQQE3lD146G8rpPgtScWJ7iVS+ycPZFnONCjBRoCoYAkW9fWoWeMr7Rg?= =?us-ascii?Q?7UlbzVRT0=3D?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR07MB615;5:AZJTBh+jpuS7HHF+KMSiUvYfQIV0A6fQRf3MRvSG9lXGBZgRmxogl52m+gWHdqUxvaOJQln/+hKRpTLmCFxlp4wKe2rvVofKr8GFCvdfE5j/07EtAcSKe3HKjrfFj6S/M1qlwgbCgv81wLmwDaNn1Q==;24:WVeVmWqZ1NimyHUtdek6gsRWL+Cs0cGEhZAnuaTAVF3HP+IFmDwzlL4Kl1FTvVeuWi+QQn8ddNf/Rm/dPnOFNoJrnmW7wx86habROQOYyk0= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2016 23:38:35.8521 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR07MB615 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org They may be accessed from low-level code, so isolating is a measure to avoid circular dependencies in header files. The exact reason for circular dependency is WARN_ON() macro added in patch edd63a27 (set_restore_sigmask() is never called without SIGPENDING (and never should be)). Signed-off-by: Yury Norov --- include/linux/thread_bits.h | 55 +++++++++++++++++++++++++++++++++++++++++++++ include/linux/thread_info.h | 44 +----------------------------------- 2 files changed, 56 insertions(+), 43 deletions(-) create mode 100644 include/linux/thread_bits.h diff --git a/include/linux/thread_bits.h b/include/linux/thread_bits.h new file mode 100644 index 0000000..0d05d16 --- /dev/null +++ b/include/linux/thread_bits.h @@ -0,0 +1,55 @@ + +/* thread_bits.h: common low-level thread bits accessors */ + +#ifndef _LINUX_THREAD_BITS_H +#define _LINUX_THREAD_BITS_H + +#ifndef __ASSEMBLY__ + +#include +#include + +/* + * flag set/clear/test wrappers + * - pass TIF_xxxx constants to these functions + */ + +static inline void set_ti_thread_flag(struct thread_info *ti, int flag) +{ + set_bit(flag, (unsigned long *)&ti->flags); +} + +static inline void clear_ti_thread_flag(struct thread_info *ti, int flag) +{ + clear_bit(flag, (unsigned long *)&ti->flags); +} + +static inline int test_and_set_ti_thread_flag(struct thread_info *ti, int flag) +{ + return test_and_set_bit(flag, (unsigned long *)&ti->flags); +} + +static inline int test_and_clear_ti_thread_flag(struct thread_info *ti, int flag) +{ + return test_and_clear_bit(flag, (unsigned long *)&ti->flags); +} + +static inline int test_ti_thread_flag(struct thread_info *ti, int flag) +{ + return test_bit(flag, (unsigned long *)&ti->flags); +} + +#define set_thread_flag(flag) \ + set_ti_thread_flag(current_thread_info(), flag) +#define clear_thread_flag(flag) \ + clear_ti_thread_flag(current_thread_info(), flag) +#define test_and_set_thread_flag(flag) \ + test_and_set_ti_thread_flag(current_thread_info(), flag) +#define test_and_clear_thread_flag(flag) \ + test_and_clear_ti_thread_flag(current_thread_info(), flag) +#define test_thread_flag(flag) \ + test_ti_thread_flag(current_thread_info(), flag) + +#endif /* !__ASSEMBLY__ */ +#endif /* _LINUX_THREAD_BITS_H */ + diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h index ff307b5..c905fec 100644 --- a/include/linux/thread_info.h +++ b/include/linux/thread_info.h @@ -50,8 +50,7 @@ struct restart_block { extern long do_no_restart_syscall(struct restart_block *parm); -#include -#include +#include #ifdef __KERNEL__ @@ -61,47 +60,6 @@ extern long do_no_restart_syscall(struct restart_block *parm); # define THREADINFO_GFP (GFP_KERNEL | __GFP_NOTRACK) #endif -/* - * flag set/clear/test wrappers - * - pass TIF_xxxx constants to these functions - */ - -static inline void set_ti_thread_flag(struct thread_info *ti, int flag) -{ - set_bit(flag, (unsigned long *)&ti->flags); -} - -static inline void clear_ti_thread_flag(struct thread_info *ti, int flag) -{ - clear_bit(flag, (unsigned long *)&ti->flags); -} - -static inline int test_and_set_ti_thread_flag(struct thread_info *ti, int flag) -{ - return test_and_set_bit(flag, (unsigned long *)&ti->flags); -} - -static inline int test_and_clear_ti_thread_flag(struct thread_info *ti, int flag) -{ - return test_and_clear_bit(flag, (unsigned long *)&ti->flags); -} - -static inline int test_ti_thread_flag(struct thread_info *ti, int flag) -{ - return test_bit(flag, (unsigned long *)&ti->flags); -} - -#define set_thread_flag(flag) \ - set_ti_thread_flag(current_thread_info(), flag) -#define clear_thread_flag(flag) \ - clear_ti_thread_flag(current_thread_info(), flag) -#define test_and_set_thread_flag(flag) \ - test_and_set_ti_thread_flag(current_thread_info(), flag) -#define test_and_clear_thread_flag(flag) \ - test_and_clear_ti_thread_flag(current_thread_info(), flag) -#define test_thread_flag(flag) \ - test_ti_thread_flag(current_thread_info(), flag) - #define tif_need_resched() test_thread_flag(TIF_NEED_RESCHED) #if defined TIF_RESTORE_SIGMASK && !defined HAVE_SET_RESTORE_SIGMASK -- 2.5.0