Imported Upstream version 17.05
[deb_dpdk.git] / lib / librte_bitratestats / rte_bitrate.h
similarity index 57%
rename from lib/librte_eal/common/include/rte_warnings.h
rename to lib/librte_bitratestats/rte_bitrate.h
index 54b545c..15fc270 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2017 Intel Corporation. All rights reserved.
  *   All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/**
- * @file
- * Definitions of warnings for use of various insecure functions
- */
+#ifndef _RTE_BITRATE_H_
+#define _RTE_BITRATE_H_
 
-#ifndef _RTE_WARNINGS_H_
-#define _RTE_WARNINGS_H_
+#include <stdint.h>
 
-#ifdef RTE_INSECURE_FUNCTION_WARNING
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-/* we need to include all used standard header files so that they appear
- * _before_ we poison the function names.
+/**
+ *  Bitrate statistics data structure.
+ *  This data structure is intentionally opaque.
  */
+struct rte_stats_bitrates;
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <errno.h>
-#ifdef RTE_EXEC_ENV_LINUXAPP
-#include <dirent.h>
-#endif
 
-/* the following function are deemed not fully secure for use e.g. they
- * do not always null-terminate arguments */
-#pragma GCC poison sprintf strtok snprintf vsnprintf
-#pragma GCC poison strlen strcpy strcat
-#pragma GCC poison sscanf
+/**
+ * Allocate a bitrate statistics structure
+ *
+ * @return
+ *   - Pointer to structure on success
+ *   - NULL on error (zmalloc failure)
+ */
+struct rte_stats_bitrates *rte_stats_bitrate_create(void);
 
-/* other unsafe functions may be implemented as macros so just undef them */
-#ifdef strsep
-#undef strsep
-#else
-#pragma GCC poison strsep
-#endif
 
-#ifdef strncpy
-#undef strncpy
-#else
-#pragma GCC poison strncpy
-#endif
+/**
+ * Register bitrate statistics with the metric library.
+ *
+ * @param bitrate_data
+ *   Pointer allocated by rte_stats_create()
+ *
+ * @return
+ *   Zero on success
+ *   Negative on error
+ */
+int rte_stats_bitrate_reg(struct rte_stats_bitrates *bitrate_data);
 
-#ifdef strncat
-#undef strncat
-#else
-#pragma GCC poison strncat
-#endif
 
+/**
+ * Calculate statistics for current time window. The period with which
+ * this function is called should be the intended sampling window width.
+ *
+ * @param bitrate_data
+ *   Bitrate statistics data pointer
+ *
+ * @param port_id
+ *   Port id to calculate statistics for
+ *
+ * @return
+ *  - Zero on success
+ *  - Negative value on error
+ */
+int rte_stats_bitrate_calc(struct rte_stats_bitrates *bitrate_data,
+       uint8_t port_id);
+
+#ifdef __cplusplus
+}
 #endif
 
-#endif /* RTE_WARNINGS_H */
+#endif /* _RTE_BITRATE_H_ */