becopyopt: Inline the thin wrapper nodes_interfere(), so we do not need to fetch...
[libfirm] / include / libfirm / timing.h
index 163e91b..9c53410 100644 (file)
@@ -1,26 +1,11 @@
 /*
- * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
- *
  * This file is part of libFirm.
- *
- * This file may be distributed and/or modified under the terms of the
- * GNU General Public License version 2 as published by the Free Software
- * Foundation and appearing in the file LICENSE.GPL included in the
- * packaging of this file.
- *
- * Licensees holding valid libFirm Professional Edition licenses may use
- * this file in accordance with the libFirm Commercial License.
- * Agreement provided with the Software.
- *
- * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
+ * Copyright (C) 2012 University of Karlsruhe.
  */
 
 /**
  * @file
  * @brief    platform neutral timing utilities
- * @version  $Id: tv.h 17143 2008-01-02 20:56:33Z beck $
  */
 #ifndef FIRM_TIMING_H
 #define FIRM_TIMING_H
 
 #include "begin.h"
 
+/**
+ * A timer
+ *
+ * A timer can be started/stopped multiple times and measures the (wallclock)
+ * time spent between start and stop calls.
+ */
 typedef struct ir_timer_t ir_timer_t;
 
 /**
@@ -48,7 +39,7 @@ FIRM_API int ir_timer_enter_high_priority(void);
 FIRM_API int ir_timer_leave_high_priority(void);
 
 /**
- * Get the amount of bytes allocated on the heap.
+ * Returns the amount of bytes allocated on the heap.
  * @return The number of bytes allocated on the heap.
  */
 FIRM_API size_t ir_get_heap_used_bytes(void);
@@ -56,6 +47,7 @@ FIRM_API size_t ir_get_heap_used_bytes(void);
 /**
  * Create a new timer
  * @return The timer.
+ * @see #ir_timer_t
  */
 FIRM_API ir_timer_t *ir_timer_new(void);
 
@@ -90,6 +82,11 @@ FIRM_API void ir_timer_reset(ir_timer_t *timer);
  */
 FIRM_API void ir_timer_stop(ir_timer_t *timer);
 
+/**
+ * Set currently running timer as parent to @p timer
+ */
+FIRM_API void ir_timer_init_parent(ir_timer_t *timer);
+
 /**
  * Push a timer of the timer stack. This automatically
  * stop the previous timer on tos and start the new one.
@@ -97,29 +94,34 @@ FIRM_API void ir_timer_stop(ir_timer_t *timer);
  * @param timer   The timer to push on stack.
  * @return non-zero on succes, zero if the timer is already on the stack.
  */
-FIRM_API int ir_timer_push(ir_timer_t *timer);
+FIRM_API void ir_timer_push(ir_timer_t *timer);
 
 /**
  * Pop the current timer. This automatically stops it and
  * start the timer that is now on the stack.
  * @return the popped timer
  */
-FIRM_API ir_timer_t *ir_timer_pop(void);
+FIRM_API void ir_timer_pop(ir_timer_t *timer);
 
 /**
- * Get the number of milliseconds, the timer has elapsed.
+ * Returns the number of milliseconds, the timer has elapsed.
  * @param timer The timer.
  * @return The number of milliseconds the timer is (was) running.
  */
 FIRM_API unsigned long ir_timer_elapsed_msec(const ir_timer_t *timer);
 
 /**
- * Get the number of microseconds, the timer has elapsed.
+ * Returns the number of microseconds, the timer has elapsed.
  * @param timer The timer.
  * @return The number of milliseconds the timer is (was) running.
  */
 FIRM_API unsigned long ir_timer_elapsed_usec(const ir_timer_t *timer);
 
+/**
+ * Returns the number of seconds, the timer has elapsed.
+ */
+FIRM_API double ir_timer_elapsed_sec(const ir_timer_t *timer);
+
 #include "end.h"
 
 #endif