From patchwork Tue Aug 11 07:33:58 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: hongbo.zhang@freescale.com X-Patchwork-Id: 52293 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-lb0-f198.google.com (mail-lb0-f198.google.com [209.85.217.198]) by patches.linaro.org (Postfix) with ESMTPS id 3434A22919 for ; Tue, 11 Aug 2015 08:01:23 +0000 (UTC) Received: by lbcje9 with SMTP id je9sf15221358lbc.3 for ; Tue, 11 Aug 2015 01:01:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:delivered-to:from:to:date :message-id:in-reply-to:references:mime-version:spamdiagnosticoutput :spamdiagnosticmetadata:cc:subject:precedence:list-id :list-unsubscribe:list-archive:list-post:list-help:list-subscribe :content-type:content-transfer-encoding:errors-to:sender :x-original-sender:x-original-authentication-results:mailing-list; bh=nZ99z5lppeu8QEkX25mAe1N4DDZu0nyl/DAPIpWI8rc=; b=Ji7+S7RtOOyndG14zPyKo1r1EaAPNUu1Djzp1tYfNcKFSzj4qHVVdGV7WtTa8YrgF4 lXvYNe7t0AT/HV4qbjSCHFNxxmQgezZSwN6j3TYfUNrYkFLwthvNfJqY8IdexmGmHLIa xV6hS4TWR1BHzMHCWQ0WmaowvqzoosZE3pgYmVL/G/8eb/RHMYRlkAZBIO8P9Z2HnaHf qxf760RcSaI2YB9aLhS0k9e7nG36YUBVlBW4Dc+vMliPKFB+1WSaRRnVVa2qNVzbU0qO QOETjsqd4BKymQ8D/19LtweIWI3lAtuhRL1eURaYqanJe0zsiXvVnWfVcV3rdlATRlbm H4KA== X-Gm-Message-State: ALoCoQl0d/yEDeu0GHTLr3YUT8h2qt1QYoQbyDlZQiKzREL1DgHhcI0+IzkQWs/QM7Kf5OqSGAdb X-Received: by 10.152.120.138 with SMTP id lc10mr1921291lab.3.1439280082149; Tue, 11 Aug 2015 01:01:22 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.152.18.137 with SMTP id w9ls757507lad.102.gmail; Tue, 11 Aug 2015 01:01:22 -0700 (PDT) X-Received: by 10.152.7.68 with SMTP id h4mr17798829laa.94.1439280082028; Tue, 11 Aug 2015 01:01:22 -0700 (PDT) Received: from mail-la0-f53.google.com (mail-la0-f53.google.com. [209.85.215.53]) by mx.google.com with ESMTPS id b1si749891lbd.146.2015.08.11.01.01.22 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 11 Aug 2015 01:01:22 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.53 as permitted sender) client-ip=209.85.215.53; Received: by lalv9 with SMTP id v9so23808146lal.0 for ; Tue, 11 Aug 2015 01:01:21 -0700 (PDT) X-Received: by 10.152.22.133 with SMTP id d5mr18492156laf.112.1439280081921; Tue, 11 Aug 2015 01:01:21 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.112.7.198 with SMTP id l6csp2356814lba; Tue, 11 Aug 2015 01:01:20 -0700 (PDT) X-Received: by 10.107.160.197 with SMTP id j188mr29059189ioe.194.1439280079150; Tue, 11 Aug 2015 01:01:19 -0700 (PDT) Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id a6si708099ioa.85.2015.08.11.01.01.18; Tue, 11 Aug 2015 01:01:19 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Received: by lists.linaro.org (Postfix, from userid 109) id 2FF396205C; Tue, 11 Aug 2015 08:01:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,URIBL_BLOCKED autolearn=disabled version=3.4.0 Received: from ip-10-142-244-252.ec2.internal (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id EE80D62069; Tue, 11 Aug 2015 07:54:51 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id D3E836205C; Tue, 11 Aug 2015 07:54:46 +0000 (UTC) Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0138.outbound.protection.outlook.com [65.55.169.138]) by lists.linaro.org (Postfix) with ESMTPS id 8398262047 for ; Tue, 11 Aug 2015 07:53:09 +0000 (UTC) Received: from BLUPR03CA001.namprd03.prod.outlook.com (10.255.124.18) by DM2PR03MB496.namprd03.prod.outlook.com (10.141.85.152) with Microsoft SMTP Server (TLS) id 15.1.231.11; Tue, 11 Aug 2015 07:53:08 +0000 Received: from BN1BFFO11FD008.protection.gbl (10.255.124.4) by BLUPR03CA001.outlook.office365.com (10.255.124.18) with Microsoft SMTP Server (TLS) id 15.1.225.19 via Frontend Transport; Tue, 11 Aug 2015 07:53:08 +0000 Received-SPF: Fail (protection.outlook.com: domain of freescale.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 BN1BFFO11FD008.mail.protection.outlook.com (10.58.144.71) with Microsoft SMTP Server (TLS) id 15.1.243.9 via Frontend Transport; Tue, 11 Aug 2015 07:53:08 +0000 Received: from hongbo.ap.freescale.net (hongbo.ap.freescale.net [10.193.20.23]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id t7B7qjK9024123; Tue, 11 Aug 2015 00:53:05 -0700 From: To: Date: Tue, 11 Aug 2015 15:33:58 +0800 Message-ID: <1439278439-11386-9-git-send-email-hongbo.zhang@freescale.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1439278439-11386-1-git-send-email-hongbo.zhang@freescale.com> References: <1439278439-11386-1-git-send-email-hongbo.zhang@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD008; 1:fnEqhLOfab96yTmDjUzWDvUrBZpUSHzg1tTeOIthSitJHO/hn5GVnZa1AmZ9/U97prAawgJIPsq9fF6Rp5QzQQfwSe+F7sASsZ05p/P3LsvDOliMJCafmlvRoXcaM6dQkHFQ4yXzl4GiWezYGNSbsHob3TKxkGJW09AvLf9Y8B6btvBfo4QbScFNCDB9Srh6c8SscvJvJkkANfQrveruEy6oAK5xV6KTFhABovbqvxWROHbCCz28DS3HKRrQOAi9gyDKyp2Myab5HS5QE6Ttv7b7y/xB30omXVcB54b7GZ7XnEZ7sKhiR0t4ZsUgJugydruLS/Bt04sptJQjPpztbcBfdVhW7kAaQ/sOI/UCyZluIDHrZCEbso1Pq0NlPl8hekYGzfhLv4SsAavGSLfiIQ== X-Forefront-Antispam-Report: CIP:192.88.158.2; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(339900001)(3050300001)(189002)(199003)(64706001)(5001830100001)(19580405001)(86362001)(105606002)(69596002)(97736004)(81156007)(5003940100001)(47776003)(6806004)(4001540100001)(189998001)(104016003)(19580395003)(33646002)(50226001)(5001860100001)(110136002)(62966003)(5001960100002)(77096005)(68736005)(77156002)(50466002)(2950100001)(48376002)(86152002)(92566002)(2351001)(50986999)(87936001)(229853001)(36756003)(76176999)(106466001)(46102003)(85426001)(41533002)(217873001); DIR:OUT; SFP:1102; SCL:1; SRVR:DM2PR03MB496; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; DM2PR03MB496; 2:CZlB62Obp0zPrhbufrpgIFxAZkfNpK/37ECf2b4UdBvrfI+4UzuKB4rjmUfZByRKoRzOwdX1LhDIA/h+mwneSevyWTWTauud4Xi/IhAbcuzIQQeJWaL2o4W6Rf+LoICTle9ICZPWgYzwHeC7WxK4jxjEoFoaPB37ASi2QRF4nCo=; 3:yd1fLpK6rooB+yOWYDfNDjc99+0+gFVbdBaevNZGgloukxGGWyZxn0wQsdSHxW7PyUcocU488viKdGCLwG/R1Qw6EtY8iqnKI//XF0/zQbY0xqE1kGsjgtTy4MXlEZgx8JZB5vdbo3FobNyghMMmXVMkWIII/hFA9Aai3iYL7OUzJ76dl8Y767FGh4cp4C7ELCYsJRkrGTgCnAWfb9xqUKIlGySqG0k90z7zANcf8c8=; 25:IFLKOlYkOdhgKh96o8maOpshyky9tFDyyplLZxiipVc0b8779xWscD3uC9mIpMWX3wjsNWpBHcf7TPieNk+9azkWSJ4YCWjGn9u0kWRDaIGsFdkx629TIEj2jecThs4Y91vFqhSZaHgJqmhA8Da7bgfPgWm7Bc0KFz+2J8p4ysSA4/xq5z5MYq4Jsp4uJWiJ+XJ9XtT76kJYUVK0HBfG7rfDHx8XScaFEuCU7R9lkH18ot7mN5EKwuLBu5NpKOlVA/k8j3oyVTMKCp/modXTRw== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR03MB496; X-Microsoft-Exchange-Diagnostics: 1; DM2PR03MB496; 20:uTVhuEVnU8qvJM09Mf6hjJgKlrkrbz2xxM8WEZ4fx6NqHxtsGx4Guqv1ucc0pk02LGpaFUtpkWYrJYclBof0HMrE8DV8IjDB3dn1s90xU4vyPQHs7u4nlDGdhKNn3/s6e65o85U353pPUbeFqCW0kw09istPrHheFT63L8f+ezKdkbMA6sor069Acey6RCMTEQUDPlCdvuvY7XSkrX64N6WPDvnVijVAs+LhPjhyPAn5cgw8Je0VE7ynMkvCLo2XOD29sPYhflrV4lUxyPJUaqI1no7fIzlpYAzg40yhZwrYIYHLG9drkbrWbupsNRpeEWlzNdS6i2Y0DimRGy4TfPSxhGAuXv0fhqt6eRbAWP4=; 4:vJW1uO8HJL5uJs0QYcTWwXiLlBoH7Jrzv0K8F2pPJW5aDldov3WSDP69AD5ygTx/eGayddVymEsy4rHRuYbkhjvINraClhZPgJk8ag23ejg8iyyHpDBuYFj12Gpi7ZqyHUXDrpdNXjGZb6SoNm6Zh0BU14XbJu9YX42QZsEyDJIymd8isuOrj9FY3DfgUO/6dLwAwUJutw/MUSdrJ1cKxlPh1HULNbS6Rb89ShufO5g4x20/TgrUYDXAyOtS8ypVQf2dpSAiRBFHRxP5nhi5zJnUIfPQq7BS9Kf8azlgucU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:DM2PR03MB496; BCL:0; PCL:0; RULEID:; SRVR:DM2PR03MB496; X-Forefront-PRVS: 066517B35B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR03MB496; 23:Ub7lPaJCbVIL4jzpDQf364uKDsAz3e2E2cmliGOJAM?= =?us-ascii?Q?rwAnR3rM3HgF6qcCAi7NQD/QAY/rtWZ/eKc7tznfCoGjwi4F5QhYVQq+IzkJ?= =?us-ascii?Q?c//wVhpkeP/LwgPpsASy+/fDpcxK8FtAXzvAn+OemsBXw1Xn8nlG4isMbNgU?= =?us-ascii?Q?qncUPclZCLCwLxzZwRM5EOZhxQXRN3O3epRrXCbfL9JUY+qxhKVEnV8QTUxl?= =?us-ascii?Q?O67AotOCRUFYyrOXFKFrepFd3kNC1PxuQvDXylqKtrNu+sNxxXFQw6tj+bpH?= =?us-ascii?Q?iRDvNFl4fMnLGRdemVEFDhUICFeIFiZv7vwqhEgBxCtEUuf+8uG5FnSEQYmO?= =?us-ascii?Q?mqPT2pul1PNL1RKnx8RVIp1TDLy7CqrRcDsbxaxl+3LjdoKwq0Ff2AM+xD+7?= =?us-ascii?Q?AnaQfJ/jcGOCtxqVjb4uKRa6E+S0Z0LeXYjQ6+bKTEb6rg6IfM93VrKrF882?= =?us-ascii?Q?wHEXIq0C2SIyZ+2P6LUDzwRhjyVJMnq0YcmTLy5yEq2qUUOEvG4zQn72jrhL?= =?us-ascii?Q?gy1Dm1R8XgrOvkfabLVAMP0TmJQU6JECSYO2ReUJHLt/HQyeN/2NifF5uOZd?= =?us-ascii?Q?md7xT/0LVwnprnOUGp7qfFOAgs07HhcRHdSTw72sjrOCh8Ys8Q0GALZB41qP?= =?us-ascii?Q?JPph99qLPlcV1PHMJMbqnOrOwP4vL7x6MR/l/j98HBKqd3flIh5SRGUWpnr+?= =?us-ascii?Q?/F7TKyMbxnblK2SMVAUdQrZcF3RH7/qCevY//tzyNI559j9xGkGK9BYUU51p?= =?us-ascii?Q?LLF6eiWVjgzCKnjxcpG2pHd/L7N9iW265W15WzvFgIvQuzoINLhNj/JWLKQq?= =?us-ascii?Q?oZsLlrU0ptznbP25phWAKBCkQhtLWmuJKlVnq4B3clYb8+z/Mmz2FMWy5/yJ?= =?us-ascii?Q?/5H6lFlhieg+kxzv/g6NNMSH///eBRIe/i5Ui3BjoW7YWzeauxyuomllbx1Z?= =?us-ascii?Q?RXcjPzO+/a8dxJxS4tzZBdSd/ob1vwMR2872/Rw5iWkVNIkrvZBUTeufsx6W?= =?us-ascii?Q?4dqGGiFIApUqpt1T9nzvf5EN4aLpiTN2SEm9VvtB1dkmKoR2PFyDP26Pqc7h?= =?us-ascii?Q?lvtQDoS3jqD0FKe2+kol85JLypWes9fh52yRHE8m7OY+yzCQAEz3im1R/HI3?= =?us-ascii?Q?Ha/qGnCawVS2zoO6j4iJ77kmNZuwEVW0aM2AqFvk8y+1a5s711yMuOcod802?= =?us-ascii?Q?UA8GlB8UZ5tBwN7XpIDDH7U78nSAr8P0lmkegMuOqAoTx0/XiWTi2Q1A=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR03MB496; 5:4bEUEIZJScU0Xj6F/XJJ9sMGGMzT5g3e8OVlkqyKCBMMX8KL0XGR2I+70+nYYpl3yclNwvbqV62qZ6hUOZzoAMzCWuqmpieTnB5vb9o8NFM+DldRJ9Y+5dAdvMYesLXjbKDNNkUqZdc+F/ZdtUyvbQ==; 24:G2i9A4TdFCTALGVthQ4Ufml8Sde46jz8eBeoYVKPLVOr4WN73muk/8Fl62ctPWS6SnpB+4Y5VlHolo2D0IkYkRf0Dj37KA7EzXWITlJB/RM=; 20:QIRX8Nwy6aefqiAQjDytqxLanmrZFQqpEKcVh+uWCUS/B0plYBIxO0li+szqlCrEWPMtu18AG34ZLWOkN7EKsw== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2015 07:53:08.3662 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR03MB496 X-Topics: patch Cc: stuart.haslam@arm.com, petri.savolainen@nokia.com Subject: [lng-odp] [API-NEXT PATCH v4 08/10] linux-generic: sysinfo: add API to get current CPU frequency X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: , List-Help: , List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: patch@linaro.org X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.53 as permitted sender) smtp.mailfrom=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 From: Hongbo Zhang Previous CPU frequency API is adapted to return max frequency, now new APIs are added for getting the current CPU frequency. odp_cpu_id_hz(int id) returns frequency of the CPU specified by parameter id, while odp_cpu_hz() returns frequency of the CPU on which the thread is running. Signed-off-by: Hongbo Zhang --- include/odp/api/cpu.h | 20 ++++++++++ platform/linux-generic/odp_system_info.c | 63 ++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) diff --git a/include/odp/api/cpu.h b/include/odp/api/cpu.h index 36bc47f..02b3420 100644 --- a/include/odp/api/cpu.h +++ b/include/odp/api/cpu.h @@ -62,6 +62,26 @@ uint64_t odp_cpu_hz_max(void); uint64_t odp_cpu_id_hz_max(int id); /** + * Current CPU frequency in Hz + * + * Returns current frequency of this CPU + * + * @return CPU frequency in Hz + */ +uint64_t odp_cpu_hz(void); + +/** + * Current CPU frequency of a CPU (in Hz) + * + * Returns current frequency of the specified CPU + * + * @param id CPU ID + * + * @return CPU frequency in Hz + */ +uint64_t odp_cpu_id_hz(int id); + +/** * CPU model name * * @return Pointer to CPU model name string diff --git a/platform/linux-generic/odp_system_info.c b/platform/linux-generic/odp_system_info.c index 55516d0..cb5e224 100644 --- a/platform/linux-generic/odp_system_info.c +++ b/platform/linux-generic/odp_system_info.c @@ -146,6 +146,42 @@ static int cpuinfo_x86(FILE *file, odp_system_info_t *sysinfo) return 0; } +static uint64_t arch_cpu_hz_current(int id) +{ + char str[1024]; + FILE *file; + int cpu; + char *pos; + double mhz = 0.0; + + file = fopen("/proc/cpuinfo", "rt"); + + /* find the correct processor instance */ + while (fgets(str, sizeof(str), file) != NULL) { + pos = strstr(str, "processor"); + if (pos) { + sscanf(pos, "processor : %d", &cpu); + if (cpu == id) + break; + } + } + + /* extract the cpu current speed */ + while (fgets(str, sizeof(str), file) != NULL) { + pos = strstr(str, "cpu MHz"); + if (pos) { + sscanf(pos, "cpu MHz : %lf", &mhz); + break; + } + } + + fclose(file); + if (mhz) + return (uint64_t)(mhz * 1000000.0); + + return -1; +} + #elif defined __arm__ || defined __aarch64__ static int cpuinfo_arm(FILE *file ODP_UNUSED, @@ -154,6 +190,11 @@ odp_system_info_t *sysinfo ODP_UNUSED) return 0; } +static uint64_t arch_cpu_hz_current(int id) +{ + return -1; +} + #elif defined __OCTEON__ static int cpuinfo_octeon(FILE *file, odp_system_info_t *sysinfo) @@ -196,6 +237,11 @@ static int cpuinfo_octeon(FILE *file, odp_system_info_t *sysinfo) return 0; } +static uint64_t arch_cpu_hz_current(int id) +{ + return -1; +} + #elif defined __powerpc__ static int cpuinfo_powerpc(FILE *file, odp_system_info_t *sysinfo) { @@ -237,6 +283,11 @@ static int cpuinfo_powerpc(FILE *file, odp_system_info_t *sysinfo) return 0; } +static uint64_t arch_cpu_hz_current(int id) +{ + return -1; +} + #else #error GCC target not found #endif @@ -380,6 +431,18 @@ uint64_t odp_cpu_id_hz_max(int id) return -1; } +uint64_t odp_cpu_hz(void) +{ + int id = sched_getcpu(); + + return arch_cpu_hz_current(id); +} + +uint64_t odp_cpu_id_hz(int id) +{ + return arch_cpu_hz_current(id); +} + uint64_t odp_sys_huge_page_size(void) { return odp_global_data.system_info.huge_page_size;