diff packages/kernel/current/include/clock.inl @ 64:c38311975d4f ecos-sw-2000-01-28

Merge from eCos master repository on 2000-01-28-04:28:11-GMT
author jlarmour
date Fri, 28 Jan 2000 04:59:39 +0000
parents 443894e2e912
children bf00f99aec69
line wrap: on
line diff
--- a/packages/kernel/current/include/clock.inl
+++ b/packages/kernel/current/include/clock.inl
@@ -9,25 +9,27 @@
 //
 //==========================================================================
 //####COPYRIGHTBEGIN####
-//
-// -------------------------------------------
-// The contents of this file are subject to the Cygnus eCos Public License
-// Version 1.0 (the "License"); you may not use this file except in
-// compliance with the License.  You may obtain a copy of the License at
-// http://sourceware.cygnus.com/ecos
-// 
-// Software distributed under the License is distributed on an "AS IS"
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the
-// License for the specific language governing rights and limitations under
-// the License.
-// 
-// The Original Code is eCos - Embedded Cygnus Operating System, released
-// September 30, 1998.
-// 
-// The Initial Developer of the Original Code is Cygnus.  Portions created
-// by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions.  All Rights Reserved.
-// -------------------------------------------
-//
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.0 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://sourceware.cygnus.com/ecos                                        
+//                                                                          
+// Software distributed under the License is distributed on an       
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
 //####COPYRIGHTEND####
 //==========================================================================
 //#####DESCRIPTIONBEGIN####
@@ -91,6 +93,24 @@ inline void Cyg_Clock::set_resolution(
     resolution = new_resolution;
 }
 
+inline cyg_tick_count Cyg_Clock::convert(
+    cyg_tick_count value,
+    struct converter *pcc )
+{
+    cyg_uint64 t = (cyg_uint64)value;
+    // Do this in an order to prevent overflow at the expense of
+    // accuracy:
+    t *= pcc->mul1;
+    t += pcc->div1 / 2;
+    t /= pcc->div1;
+    t *= pcc->mul2;
+    t += pcc->div2 / 2;
+    t /= pcc->div2;
+    // The alternative would be to do the 2 multiplies first
+    // for smaller arguments.
+    return (cyg_tick_count)t;
+}
+
 // -------------------------------------------------------------------------
 // -------------------------------------------------------------------------
 // Alarm inlines