From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0068.outbound.protection.outlook.com [104.47.34.68]) by dpdk.org (Postfix) with ESMTP id 98FFF2C6E for ; Wed, 14 Dec 2016 06:10:19 +0100 (CET) Received: from BLUPR0301CA0029.namprd03.prod.outlook.com (10.162.113.167) by DM2PR0301MB0749.namprd03.prod.outlook.com (10.160.97.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.9; Wed, 14 Dec 2016 05:10:17 +0000 Received: from BL2FFO11FD050.protection.gbl (2a01:111:f400:7c09::199) by BLUPR0301CA0029.outlook.office365.com (2a01:111:e400:5259::39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.9 via Frontend Transport; Wed, 14 Dec 2016 05:10:17 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; infradead.org; dkim=none (message not signed) header.d=none;infradead.org; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BL2FFO11FD050.mail.protection.outlook.com (10.173.161.212) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.761.6 via Frontend Transport; Wed, 14 Dec 2016 05:10:17 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:1185; Count:13 Received: from [10.232.14.87] ([10.232.14.87]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id uBE5ACSr014305; Tue, 13 Dec 2016 22:10:13 -0700 To: Jan Blunck References: <1480846288-2517-1-git-send-email-shreyansh.jain@nxp.com> <1481636232-2300-1-git-send-email-shreyansh.jain@nxp.com> <1481636232-2300-2-git-send-email-shreyansh.jain@nxp.com> CC: , David Marchand , Thomas Monjalon , Ferruh Yigit , , Jan Viktorin From: Shreyansh Jain Message-ID: <3310c320-fa39-cd8c-ab77-ced20daa5073@nxp.com> Date: Wed, 14 Dec 2016 10:42:59 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-IncomingHeaderCount: 13 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131261658178272821; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(336005)(39400400002)(39410400002)(39860400002)(39840400002)(39450400003)(39850400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(189002)(24454002)(199003)(377454003)(65806001)(189998001)(23676002)(38730400001)(104016004)(4326007)(50466002)(77096006)(47776003)(92566002)(65956001)(4001350100001)(36756003)(97736004)(69596002)(5660300001)(8936002)(230700001)(31686004)(54356999)(68736007)(64126003)(110136003)(8676002)(626004)(81166006)(81156014)(106466001)(83506001)(85426001)(105606002)(50986999)(65826007)(305945005)(33646002)(31696002)(229853002)(86362001)(356003)(76176999)(6916009)(2906002)(2950100002)(6666003)(93886004); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0301MB0749; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD050; 1:ve3gfj+2RZJdYchoKCvlFrL7Ub+fWt6DvuxkGL38dSmB1lBnLAQOXyDX6IzY0JWd54/0FQd4o6TZYuIFaZOWG1pJKUwW+ymzLM5mo/LtegyTC4GXtN1pV+02QNsOAMpp6w+va7O8e34sfJ5ySA4jerl+IseNjauWRUd4afXLa09VU1EGkGi+VsbmEOKgccT2DN/JpiJUQuTfwg2MhBNsHf9lt/TZOPE5SsnwYyZbN8+Iyx4O2FjgwQzI/AbutDTwyMumVMJOo526KqkWqPLoWMTREKVIPiyqXS1EC5xIffaANYcYwC27TJ9XGkKdj6G0nxyJZzY+YtKhAPQd3Zh2IvW+1DP2xl4MfgJoI2UaBjFBb2YG/Y6i9yI1qCz8qeyuQyPLXOwM5wVMjdEyHiTZy2MeaKN9jhdT5CmpHuSv1PFrlkc8jzupWL+tYB957Od3sN2+Ujl+ClCTZS3SYRCdjoM0DkExCQiH5vtzJrSMHxfTJuuy4TCRd058JxjWqk0xJTQ8riQipxsMU3XSQ/VU+KnQ0Ub7/kjqaBlCLzEq1Otftdg7i+VcZtKW/lZWu+bcekzwKoS6KDpEUXwH9HIIg+EhXA1iwJ1ss7TDc7B/6QOlkXhUGvrL+/3r28jm2ARaWegq/ashnroc6IXzH0L2BQ== X-MS-Office365-Filtering-Correlation-Id: 88cf15f5-d9b2-412e-3e35-08d423df7ecf X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:DM2PR0301MB0749; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0749; 3:K0XiwGtUTK75sn9YU3k5mKhXbxuvlxOU4Y4/AmE2FvxEqenW8Uv/qek1T9Okl9+LAf061EJt0OjR5dBR6UUymJOAotDqDSMkfQKaDTu4tloiPxjpZEjQkHXr+aqhcB8JW7XmUjZ7ClZwo8f/YUmh3O62kNQ3vy6hokOHCwgx0mAiNSkXFufADwu0FLrJjIxSrrnciWPLZi+hZlJYAu/dXYJEhHqx3Ft9OMUE0hkb6ZzEGRrb5d3wJot6Ro1Mhk9xvech5DRiD+4agcq/rXEoP6qiTVZdV1ylkS5BwX3pGdDpHKfclHV/rekO0n8MMvGeOxldpHRai2QM/wo/mGEroscTZaQBHZTHd7cNxzrn+LQ= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0749; 25:CtMCI+myC/fBC8v0uFlZ9AAKaKmnYto9+6GbfowtHW33UGLJ8TNYbRBZpqFho5zshNoWM7P61gXNP8b5EIdxDqhm0/YihfCsV4C4lH+cPNMzKHu6c+KnLok+rDoUmTw2ZXNn0TXsVLPlPNY4Py3S7GevybGe6Y77gURXTh4EwUgbQlOJ3fr9i9VXUodhUEQ/xb6qcNJkbm+oJS0w++uLtoAeIpS0kF9IuZgVLn1YdUMAkr0PFflcVgmcRPlpZ1rvDoTYDxFkaywJFFgJOFhwim+yCS21PEF60oMSbqa369DE/Qj9iqDrQxxTqWhewV6ei2E31wCrYkzabKumMrwfHSp1ElU/plk6/6OZPJOoa2f/mW0vvGbr30BxRDd5Iq37xXAe2Ngoy5XfvAaX8wKE64ykjoMfCKOkwp6+L+ZRwD5mWDVsK0jIf1NRyEYGqWCZeFtI+B+l0J9Qfel837VUN3wbdPOgDws9o8/RY3qkvXL1ZqqlDAnhaRQ9bkx9xGF6gRz19J9XaN/JHecN0ayt+ccwUb133VumlKpBOBPYR8gmv5ZgfCdWCIm2g8iZ0OLSrrzk1kgpbsflzEkfIj+G+psE+klXKOQRDNgEK3g7wJ79Lf7HIkwbt4HCzoxrsg1PlBBM1vHkCf5u6ZSxERvBmAgJ42VS1K6iGyl7v7+Npp/KyiNzXPs3iZ1yFWkqveg7askvuAnpctds6oRIlUGeZQMciU5crYlbHYS8coUxTtNJtJGW7qMbc+jOXRqOJ44Kncp39AieIcvTLxNYfRmQxQ== X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0749; 31:KEa1T1S2XiSHCi3KPPgLYU/yreV3R3PtLIH0FP072H56oczeTx3ONkbE8P+sX8M+++cTHUh7lkkWsDgiQbI8pOgiz/sU6/Pf3+KGqjJDBzzAam076vuzHKfsH5cjSmpsXBilhHlyK7rQHNChwNsIsfnnNKF9qXptqvsGUNWx7pHREHpfLi6WHwcZl1390pgoKs9V3y8NKcJSRYA6l6deW8oqOfbB4wb2J+OzKMSBhRcwhfPCVPA/3GGYE/dmljbHs811PH1opJFKIuuHYtijYw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13017025)(13018025)(13015025)(13024025)(13023025)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6096035)(20161123565025)(20161123563025)(20161123559025)(20161123556025)(20161123561025); SRVR:DM2PR0301MB0749; BCL:0; PCL:0; RULEID:(400006); SRVR:DM2PR0301MB0749; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0749; 4:Lsh/kRjElftt6+WsLwJ6YSClpjuwd+15s2pB4fian/buGsA7gC/IrBDo6QaGgQgxomtoLAUzkElb7Q3KtJCKIE9p/evZqfo9M58n7XEQa6X+zJA4Cb/fu5U+NJ9UVI2WEBtDoF2gKRMUYvkb9xrnX9QdlRl55A+WgQsTYh8qvxmH++zWgH1ADqwZCCNlIL9Xzi/Qo4XNQC+Ul/ZG2ss+2oAccULYPN0DVSah6tVh64oc9xzOs1oNheA3UPu6ZMgN3IXQ4/1jYXGyafgQtsfbKwEbugxgLsEdFruy1zIzvDZhFQ/pcUnQEY5y1MkxgqBqcjiNAPqYbsKpSWdA5XFdDtQM9QdJpKIVfa77gr1PcXnJAiHxvvLwjWfnmJDjm1CbzN9Q0oMEZqVxmui2Pck/HUNeYjsO9kk2L4FjKxkHP+wocJVfKFWzMgvSrwT6sBVVrMAVRuvC0vBu1VxDcMxvb7JUH7if88wvntO62tzFlSGH4woHya8fgrI4BXz2vnvEa5g1H8ZS4ED49bGvTW6Fl0IvZLMvxgEBpNfCHa2U7v51XvMaFi7svy/knqzd0SEUgn0y6X4V0pKyZjcakQfwVEZnpnH4qU7uW8O81QrO1Yhk0SwQojNDAeDrEuowRDeqpLeZedhYZGR/2EeozYR5ZN0rsv6fvt7aRDlZCk7cYU0QyFGJ9Y1MxNcvf+QDQ6Gwy6xBITt/N6isszCQ1vkNGY4UHMhwTaTNWQMVRWfpzUt+EoC67sgyenQ+cOJXTiLJ X-Forefront-PRVS: 01565FED4C X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTJQUjAzMDFNQjA3NDk7MjM6QmhEajNpVzZjRHQwK0ZvbmY0N2ZoTXU0?= =?utf-8?B?OHkzMjRONVBzWVlMSFpWZ29kZmJZekZhOGxMRkJOMmQzMi9hUEZDNHFiTnJZ?= =?utf-8?B?TFRuci9SMVlVTnFnemN1MExRYTYvaVJWdVpDbjhyQjFwQmI0SEpMVndyNW9Y?= =?utf-8?B?NHh4RGZLOHNRWkJLdFcvU0Z5eWVWM2tMQXVSSWpJeTV1VFNJb2ZyZ0NVRENM?= =?utf-8?B?UnNJNDlsaUVnMVJ5T3lDL0E5ZkEzTkplVnVyMkhCMXkxODl3Z3V5WWVIbk82?= =?utf-8?B?Q1BWN0NJc2dUZUhoTU1JZUszQi9oQk1oRTR1bEdHUjFaN1htMExSbGVyQm9B?= =?utf-8?B?Ums3UDA3OWdEUnZCTC9aRFE3VFYzUjdWeHlNZmVkbUdQSmJLbUEvMkI5VDZa?= =?utf-8?B?ZFdUaTNWYVdzcW81RUNZKzczNHVVSHFpZldtOGxnRlV4K1BhaGIzUW9IR2t6?= =?utf-8?B?RnhrT0g2TTJGMlhHSTlXQm5acG9GWkNtRnRiSDVXcjZtOTdFcC95VVM4Vit0?= =?utf-8?B?cUV3M3hkSkZ5cXRvNXJnR255K0NMOUNZREVDR1pXUVJYb1hkYW1pWHpqTXg0?= =?utf-8?B?dGJmSkpBTElkRWp5UkpkSnkvMTN6b2NsTFlyU0diUWpiVW9Vekc0YXh0ZElq?= =?utf-8?B?UWR2eU1ZZ3pUUjgvYU0rR0o0TUwwWDlDVitCR1djYlR1aVJ1NlhVdGk4WjJv?= =?utf-8?B?c2Q2Z1RRbSsyTSsxR1R5ck12ZUI3MjVhdnNtTklGVlpQYURyeU91UnVkWFZh?= =?utf-8?B?OGppVFltZTlpd09VejYybzlxYnFQL2YybjZ3U0R5QjdYdmNoYTA0T0FpSVJE?= =?utf-8?B?MjBKeVFQa1hHQlZITjZkQ2M0R3A1Tm1GUUxETTJ1bkZ3ZkpzRkhmcnViU01i?= =?utf-8?B?NEpNNmRQQ0Qyb29CVFVRS3R5R2M0R0txbWRPY2I4SWhmeXYwdnAvSURlOXo0?= =?utf-8?B?VDRreGE1a0ZGM1o1cVlVRWd0MFpUTC9OUURvYmZEN0k3SW90a1NyRHF3cXp6?= =?utf-8?B?QTlSK1dVdy9mVUQxaFlTbUE5S1VoT0VjWlZXditXOVlCbUdneEJudDRzUkda?= =?utf-8?B?Z3VNakpkVVVlTTgxTzhONWZiYUtkbWR1aVhmQTBtVlp1blZka0pyV29VYTRw?= =?utf-8?B?eTJuYXZ5MmV1SE1rMzVhSDlOY1RQMCtFbmdsQXRCYlhwbmE1b0lEMWtRbng2?= =?utf-8?B?TDRwK3VrNkJiaVVKUk9KenN3S1YzWGtCR0IzZ3REQ3k1L0RtbEx6MDlxWWNP?= =?utf-8?B?dURid1J5ZWtxa1U5Yy9yTkZYYlNGdXkxZmEwS055SFFyUzkzVWkwZitJeXNI?= =?utf-8?B?TllNUG9yQytYT25lQ3ZDa1M5S1k0UStYRlpHOUJTaVlTcUltVHRTdlIrcTRC?= =?utf-8?B?YUIrTWtkeDhZdFNCeHBENWlDN1hBZnBZNWlTTzVlQnc5QUlyTTVuOEtOOWx5?= =?utf-8?B?S3prUlBwNkhYcG9mTmw4SmpvZnNLSGdiVXExU2Vnc3Bjd0k4RHhlbzZtdHVG?= =?utf-8?B?R1BMYStMTUdkQll5V1lhaEJoM0ZjNlhvZDFuTHFhNzRsSW5rZG1tNnN0Znhv?= =?utf-8?B?ME1oRG9aNW5JbkNkWDNNdExmUzN0b1M4VjR2SG5GUTVZTUNwME9VbUFQUG92?= =?utf-8?B?SmhaL3dndkRCeXhLN0xkZ1QxcWlhQUVCNHdzdC9pemtiL2dtUjg4S0tDTm5O?= =?utf-8?B?UkxoTDl4OGNEcW9rc2ZicEZhR1Zxa2ZhZUUwaUFZU3lUeVZCTVRTM0RUakpD?= =?utf-8?B?UCttc0lZeUh1MjBHOEg4UWc0M2xodnhPc3ljRUhEOGZ5YVBhVGc3VnBsWUJj?= =?utf-8?B?eTRraTVTZHZoOWIva2JrREJRU0xFKzV3TGFJOXlHcGtzOHNnYkl6bVpuamxn?= =?utf-8?B?NC9Mdy8zS09ROWl6ZzFBOFpXTmlCcUFHS29tTENoSlR2TXZBOER4Zk9CUUlp?= =?utf-8?B?T0tyREFlUC9XYkxaMTBkZEw5TllIMjhDN2tlbFNPMnZldGVaOWRJa0NWNmcz?= =?utf-8?B?WE83Mm9WSUwzUFc1MncrZHhyV3Q5RzVucWdHUjRPcTVHdk5majV2YXBkeUo4?= =?utf-8?Q?Zaknak=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0749; 6:Q0LKDb5ONF1iiTBQTUXE0RJYPo9dNj7qJyNR0rCRTG+fw3SFlNfYU9cZWVvpNpKGSAv5ISx+oWNQJfzMzNOdgwUoHcd86Q85yQp6jx4plBD+pR3Ipk3DODbqGuiTXexgeva+0MLb93ZbX05UiziUSdttB+ywAxMkO5X1Y1Fz/Hdk0pUculqDP7V9CfrmyAAvYwmt2P+iPLkrvFxiKNX9e7nqesY+O6Hq0ahGXsz1aRGUAR6UhVWqnD4Dxo7AatHKf1QOqs/AMAENUVerE4mym9FvWofa1GQs+yhVum/ZjNH+Y5VpuWYug9HwQ7+2hKcz5yd3deMaBqFFmz9/9dvH1sa+Kt9DikU5u9aAjF6+COIXB7b1CFWPthO8eyjXCQnpYHJDYpRgaLDGA9BAnX66g3A8weNJw14dTa4Yg9UAbFNa38pO/32FwyHsEnqUwWyV; 5:tU+MpAB7iDAHPpOO9VLtggLBmjrjGrREb8Ob/pPMyVHqv5f5ew62EmPDVnH5FzPb5miI2OUQLaf9gPzXHK5lrgPelvzW140VAcQg9gCXZNzDyx0RhcFqEuxgmT7uHDehsql7FdNRsU00cCeE3XFIlrJvjmzxBRuN1oLGH0n709uOTQKqIcZwykeu+ktdrLC2; 24:oCLI5jWLZMWy313lr3dhF0jBNJhc+0oi56xq0HN18RoQ4jKARPw7PMu3FaCNSzOybwlvWEzAjmgrmXcgV822Dc3YCB/0fN9XOCrJ+F3rDlE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0749; 7:0qZpnfVayZhWEhRryOnlQ/L4VTiGczN8cTWoR2TQDTCxbNRUNcHs/CWik2sTvoiDa5Ce5N4sEzJM1fBY0aThEJTia+8zIBUSPgKOHLA6PwiMvDfUWcfg8DRsc5LiYOMJoejfCJpC0FerEE+m+qCMVNeiFf0VqneIzq0UpIfcZGzxBMwrVydeEA/woqaT00sdGSzTA3YNH/BxOzbGXHBL9fu4kxAtfUoswqu8U1jMw1e5K80t0gpp9d4qCLoy58QbWzayWmltjZcZPkkeq/Kp8D2t7r5zdhS8sxD0MWAZ4Vs+Vv0djHvnp3c4XpqL5nAkbNWdmfVR0itMcIveXadoVjPDUf3K0YzQuaeydWGy1UE0Tn3Jaaxlo8e9OR4kIgDFiS3T3W9TX0IkCrkQekAWp/qwnnv+UTUPUux5SbdlFFf7ue9GJ6JU650beOkh9Ro0FhxfkNzwZHx2EV4kFLJdwA== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Dec 2016 05:10:17.5308 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0301MB0749 Subject: Re: [dpdk-dev] [PATCH v2 01/12] eal: define container_of macro X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Dec 2016 05:10:20 -0000 On Wednesday 14 December 2016 03:54 AM, Jan Blunck wrote: > On Tue, Dec 13, 2016 at 2:37 PM, Shreyansh Jain wrote: >> From: Jan Blunck >> >> This macro is based on Jan Viktorin's original patch but also checks the >> type of the passed pointer against the type of the member. >> >> Signed-off-by: Jan Viktorin >> [shreyansh.jain@nxp.com: Fix checkpatch error] >> Signed-off-by: Shreyansh Jain >> [jblunck@infradead.org: add type checking and __extension__] >> Signed-off-by: Jan Blunck >> >> -- >> v2: >> - fix checkpatch error >> --- >> lib/librte_eal/common/include/rte_common.h | 21 +++++++++++++++++++++ >> 1 file changed, 21 insertions(+) >> >> diff --git a/lib/librte_eal/common/include/rte_common.h b/lib/librte_eal/common/include/rte_common.h >> index db5ac91..3eb8d11 100644 >> --- a/lib/librte_eal/common/include/rte_common.h >> +++ b/lib/librte_eal/common/include/rte_common.h >> @@ -331,6 +331,27 @@ rte_bsf32(uint32_t v) >> #define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER) >> #endif >> >> +/** >> + * Return pointer to the wrapping struct instance. >> + * >> + * Example: >> + * >> + * struct wrapper { >> + * ... >> + * struct child c; >> + * ... >> + * }; >> + * >> + * struct child *x = obtain(...); >> + * struct wrapper *w = container_of(x, struct wrapper, c); >> + */ >> +#ifndef container_of >> +#define container_of(ptr, type, member) (__extension__ ({ \ >> + typeof(((type *)0)->member) * _ptr = (ptr); \ >> + (type *)(((char *)_ptr) - offsetof(type, member));\ >> + })) > > This is a checkpatch false positive. It should be fine to ignore this. > IIRC we already discussed this before. I too thought something similar was discussed. I tried searching the archives but couldn't find anything - thus, I thought probably I was hallucinating :P So, you want me to revert back the '()' change? Does it impact the expansion of this macro? > > >> +#endif >> + >> #define _RTE_STR(x) #x >> /** Take a macro value and get a string version of it */ >> #define RTE_STR(x) _RTE_STR(x) >> -- >> 2.7.4 >> >