From patchwork Wed Aug 17 11:46:31 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 660072 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3sDnYG4v3Pz9t1T for ; Wed, 17 Aug 2016 21:48:18 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b=MWwTsuXa; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-type; q=dns; s=default; b=JQ5vN BM5c2maeOg6l18yiRO/8tgak2fWO1b2mHm9S2W4CHoIUp1cLBIA/G//Rh7SJfifJ U4w0jdNqfTIi54j6YfXlfPKY+NWv6jMkmRchnScZ563x8U5ctM9y2EZ3JMLj48jU xvb7ocrKgz614aa2266B7kBf2dJalwaUDepXU4= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-type; s=default; bh=+ILZtsU+osJ n615i3/4Ejxono6s=; b=MWwTsuXa/kf0OS2bnQOXFhCKIb9cmCOHvnxtaul/RvS U4XLA4hBqcCnGm9wNxfmzrMeypY/W7HhHO8DKfqZe1eAlB8W7xN4Ie1SrzTo4l9P fghREEChzhmt7oLcY/8h65RIa2YXxtovLvZfNKvjhcS8peh/VvrzTBILTJTd+xMg = Received: (qmail 105977 invoked by alias); 17 Aug 2016 11:48:12 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 105951 invoked by uid 89); 17 Aug 2016 11:48:10 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL, BAYES_00, KAM_MANYTO, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=no version=3.3.2 spammy=sk:set_res, 1, 55, H*M:git, H*Ad:D*pl X-HELO: NAM03-CO1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH 06/18] thread: move thread bits accessors to separated file Date: Wed, 17 Aug 2016 14:46:31 +0300 Message-ID: <1471434403-25291-7-git-send-email-ynorov@caviumnetworks.com> In-Reply-To: <1471434403-25291-1-git-send-email-ynorov@caviumnetworks.com> References: <1471434403-25291-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: AM3PR03CA043.eurprd03.prod.outlook.com (10.141.191.171) To BN4PR07MB2242.namprd07.prod.outlook.com (10.164.63.148) X-MS-Office365-Filtering-Correlation-Id: eb76ddba-6437-49eb-fe42-08d3c6945374 X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2242; 2:45trbAOBEBgWRsWeOxDv8x1HjGDNYslGjeSYWumAYomYfuYq1wk2IU0mFrmg9Y3pDggDwChiQIZvGtTzX6PbW3o0WvkARWG0gHBZMvLtAEvJPfgCHSbJGGh3oE6Uq4abYiZdpX0y5G3b4S4HUswfaOudOAm04p/UnXqCeKl46gnKdFV5NS9VSHijYugQ5rd5; 3:K4YM38i6BmSMwaU5BwWPAejpdp2bAw/obAgB29UpeeBMcLjOcuCC2RI5fapDA/Ukt37tVE8y1gR3yVukBsPkNn695ZVqqd5yW36Xlk11G65Mi1aMv3p5Xu4IBXqdc4M3; 25:lNeXhkNctsD9BkSa8GJ31ZVjIEy0cfXnE67LunBKHu0GXgMG3KFF3oVSI0OqiWxOBJ35z/kPruXTFkMiqpmcH0rN1uKBJcdXWchoT5QcCdxEGsjqyVBXlQn9X3jOGbE6SAEiIzOWMvHExuero5o/VtQjonicNDAHoCaKkt1d/zCnKZ6brVKZhJ0IdD+Bf7Zd26zPZ6AN/SH4QchD6sEa0PvYN5cDZzto5n/UVjLEJTCIACG/tnDt+n98JTGgNyNhaimutDc8q3mRhrcJjd/SYVgdHVNQrbN948Q866UOVTandvQZcQd2wkdg8GRJEfVgDKpTknr4w6xlCtNy3wtwTK51Vh0S1+lUUlTglg5QgqShBU3nzghhQzjImqCN8d6z7kiJDDkB1CNEjSdHCK03xK25v2wgiHGsl1rSkIWLJuI= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN4PR07MB2242; X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2242; 31:iYUbWDSvMZU7nJ5mPNjj2+XG2Xa4QLYSDEcofJ8oYD6qZZd0rp+N67NNE5HGzvJ5YtqO6QPAHcAZ0jMu6DTjIbPUt65AaDwTV1GSlqWFr0FimpQyacdTnKxSxjQ43BCQSmY23TudswWMC6/1hhHxcQVhWf5ozr+AdSE0JiDLZh9DUf1HmrbhjNY7dTOBsPohBt32A1qyNbgBmREePf+o0ZfrzfCzJ7mAQthi5bwl+BI=; 20:zSLv6HrxAMWQafEsecc9jQuc42WMdlfrGY0F0erOEoMI6M+vLNGfPNYaF3zCCReLg3Iy3v4iB/LJHpndINIabho1V32UbfExxSgSmpweCLgqzBYs3R0mk3jccHh+nat4dzRQ+1vqSJdhgkPK1x6Lr+iTiHdHbFoxjmfkz8KdoAFkgENh//N09uSczO06ahk5IZ+mjDWYl+8OdvY0v4VYCrZ+IhSujOygG9TX0bBqL/HV87LUWsy81N2hWkQgCBxa1n8I/ziXX09kAwi9n7+Kl5HIW3okxVjj0O/oWzVsEcgqpqQ8WHXzyD/B5VLmgOeKTsAMWoYXE9pVgpwywh9U3nLMnCWjW2XUGbNHtJolkGDAQKsTkDZxb2GzhhF2WA0bDBOK6T/dxvrqgp9FpIMDGVwoUJomDyLoNVLP3KBsfUaTF8moJfD35yMvCXvRqCIzoiMhNtNL802T7P4uFFGCAJq0AsOlOmLVXfZI38dIdM18swOAPs619bqlP0dPyxrFS5wQtPJFwFrF2mWCx7wuuAweAvzM63Bkj4EZ3dR1lDDjoJO8v3kkPV/e+bE12bVLH/bm5CNUK23Z/+1jIXJjbzVDH3Huiq/vffi8Ji/8Fe8= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046); SRVR:BN4PR07MB2242; BCL:0; PCL:0; RULEID:; SRVR:BN4PR07MB2242; X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2242; 4:R4+ZQx1Uo6VHZnnF/HQ8aeyDdZ08ilLjAetAhK3qiOYPyhG2baPrxFRi8EQ8bOLDMKla5HWJPx6jKeqIiKANtqp13/GF00Dl7ZvYGx9wc64Vkxoi/8U/roFitVxA7+w5sAqDWxMB4LU03GcWRhQFsA8RgUBqjK4lYChGPWTQshB43pQy0KTwhg9F5GmvKdcdYDrP5q3iKy24hA8j7qzN71PEx5Bp7K13hsz6Cxosyc2ejF1EKHeyeYuUTpAGAN6X/J2+kqfCKPzzloiikOn5lu0mQwk8U+jM+MwLU7wGC6vI1Xvp2rGz9qyKHLQmCOrjs/GnAyFMIofwZ4XRTaZbSEmyoOZsJa0lsD7bxphmVicf+mMNUkjYiCG5l98mlW+H X-Forefront-PRVS: 0037FD6480 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(979002)(6069001)(6009001)(7916002)(199003)(189002)(33646002)(81156014)(7416002)(8676002)(2906002)(3846002)(5001770100001)(189998001)(68736007)(586003)(81166006)(66066001)(97736004)(19580395003)(6116002)(77096005)(7736002)(50226002)(7846002)(305945005)(2950100001)(5003940100001)(76176999)(106356001)(105586002)(47776003)(50986999)(4326007)(101416001)(76506005)(36756003)(92566002)(42186005)(50466002)(229853001)(19580405001)(48376002)(2201001)(2101003)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN4PR07MB2242; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN4PR07MB2242; 23:AdtqWFLeBmj51l542CjL9sIVjBTYzoe/xkgGoscK8?= =?us-ascii?Q?x2BIOIudeYqttR14DNyz0xWJR0Bq9YGY2SwxvpSM6rNCNMtcv/pqxJjOLGQs?= =?us-ascii?Q?kKoQOyY+0ADSDkWVAqjfCL/f+YSLPOtldCtNpk5k/tGeJJXdTaehBdcVbHDj?= =?us-ascii?Q?n38TsN+ln+B5UuIMv5CHn4fdEllP4mqFbVsmk3EmTT+ue6ezgEOJ9zCNesAu?= =?us-ascii?Q?MzWGRD0MLKRgjD2/mtUb+f6XYeeCWPE/Ta0qujgJJI5jAq8fOYH6u2Qx4pVg?= =?us-ascii?Q?LBS/GrEzYy0GOAqJLHbh44ISfvCkgtFOYHbHRCGkvEXKhmacPfe3Gj8m5S6R?= =?us-ascii?Q?5G26gCq72L8avFn8BTa6apQIpmUHnWbtfT3eeofL0qMxVw7Q36ktizAFnOkx?= =?us-ascii?Q?yOc+CS/ENi6TE9aveGenhZF4gwl4Sc9EFF7Z+pWS5arzVtL18Oi414OsgfsA?= =?us-ascii?Q?2mBAMiTNulcxnwU8McfDXxTPfgUkTRxpyICFyR/2sp1Z/ThkYbEJf/2ud89/?= =?us-ascii?Q?b3Drs9wzp1TzGnj8pHi5lLsoLFwGCKPSpVIP1YVFK9ZlQ6SerE1wLJ54Nk/i?= =?us-ascii?Q?oG8d7w58OHN9xO+HbIlrvAo5iANhM890XP9aXuXTivuArrwFGmZRKI4Uwtuz?= =?us-ascii?Q?NhScDMqE+6V8UzKR1kEiucQErdWjWvtPzOlFJ+h8iONvdzcuEPKEbREdjoWD?= =?us-ascii?Q?/QjJ7g3ugRNpmcAj3p7eZHR8UGQ8Za4gJWbY7+CJerYYSs3nOdWZCraiT/MJ?= =?us-ascii?Q?uS/NOF8MQeU8ylXyJbTTM8xlYUEg428FMyI4Rbo6/kzcEaG3nS8lMtx5W8ap?= =?us-ascii?Q?FTLSawUM1sDiOnK4LTiuTWTi7u2ZfHcPmMt8b9+hDD7X93EaEBxCsC8z7vUK?= =?us-ascii?Q?Zfze8ql8mJgUTrD7lV4ZwDC//ZwzW7ZMNsIY6fgayuib/fIpw4HaoiMCOC/b?= =?us-ascii?Q?+BByja+RNlTcnsOLWwrX9X+b8qxtXkAmcxMqXakOrjsXD6fzFAdTK20Tg8ZS?= =?us-ascii?Q?3eJbI9vDOB+Yrpbv6SqDxDuwjMGQtvN3QcuHzKpDxKBnFeuJRt9is6/iWnmB?= =?us-ascii?Q?nidmkMpoq7z4bOqDFxOEo6F1oGjcP2g2KU2HpaaF0LOo5ZOqe4lHfFFSzHQU?= =?us-ascii?Q?nZQYvvISUcm2Uvr2lZebvXr2kW9zbe1A3/hJfVpLq5RFWRGCv8Ou66Ep6iKM?= =?us-ascii?Q?7DaDLioEM9WMzI/sx8o61/bSThGybGJKUtrxzPiYtgL+za7toPVD3a7JQ=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN4PR07MB2242; 6:BvVeekh6RkINAlUgwbmjRoPi6y/edJa6pBx916dzo8lIYkUDxPuK74RyJyGJWu2wUwQ1gmue7VknUbYHaQu5+T+gf2M7vXPZJATC6kU8pA4f05aTWghyqhTCGXY8w/yKdEBd8h+oajgNJv7UVKQgR/yiNtXLrjpo+JG3YprFl2H8tjhDdDt2Vg0w0arwA34ASfqRfvGfqFjR0tKlPHoaQut/4Jk+FSajKbSI6AxpJzOT7n1Uu0hSXY664T0XHu95a36cl8cEJIpLz0Jz4tZ3WSYcgp6yFfRuUAztJNBWbrY=; 5:ZUOyntpAsXPlC1YZpw5HEXLin0BqxZKiNB+NW1MGT3CKMswYQiMn9IA6dwNJ5sFPVLksJAQqH5FZllj8ENfl4maaR7U6cW226oIGO221p96QVBuONhgjcmCq/05wO4RvWk76yJ09QVVDBrIpVxMs8Q==; 24:qLX6Z4CPxVL9fv/4YVWhofQtYAiK04AsSj1N5Z8N67LOYdOdpd3KR9q6Om4FdbDpfj9nywRovqk1CNtwDqM3ioGe9Yqs2zvPu0fGK7zHgDM=; 7:61/DIAxXLPSbo8OVhCZFjGVjmuLj4gundjfagSoCUMUKNcRaHzYSNuTn/NhPi5sgUt/3G9KBrPVehpR1l5EdPDWUYMqVwNpFZvHFxY9tAjn0SsD91a2tZfAzy7wi/dBblDusHnXRQglgxzpY4FLpP2Z/ni4CorAYaveiG4y8sq0r3P5nY2L411wAaa8jYqp3buOxBvnvJNJYeCqJ3iWr7m65FIbeIQtKaO4RYNyhKCouvZMiOiZ1P4boJjASxv5r SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Aug 2016 11:47:54.4295 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN4PR07MB2242 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 by Al Viro 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 cbd8990..c778121 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__ @@ -62,47 +61,6 @@ extern long do_no_restart_syscall(struct restart_block *parm); # define THREADINFO_GFP (GFP_KERNEL_ACCOUNT | __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) #ifndef CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES