blob: 453302dec6a1b520e5ed935d8ce23e48d0dd18a2 [file] [log] [blame]
robert.swiecki3bb518c2010-10-14 00:48:24 +00001/*
robert.swiecki@gmail.com3b630b42015-02-16 10:53:53 +00002 *
robert.swiecki@gmail.com97c77332015-02-14 23:06:58 +00003 * honggfuzz - utilities
4 * -----------------------------------------
robert.swiecki@gmail.com3b630b42015-02-16 10:53:53 +00005 *
robert.swiecki@gmail.com772b33d2015-02-14 20:35:00 +00006 * Author: Robert Swiecki <swiecki@google.com>
robert.swiecki@gmail.com3b630b42015-02-16 10:53:53 +00007 *
robert.swiecki@gmail.com772b33d2015-02-14 20:35:00 +00008 * Copyright 2010-2015 by Google Inc. All Rights Reserved.
robert.swiecki@gmail.com3b630b42015-02-16 10:53:53 +00009 *
10 * Licensed under the Apache License, Version 2.0 (the "License"); you may
11 * not use this file except in compliance with the License. You may obtain
robert.swiecki@gmail.com772b33d2015-02-14 20:35:00 +000012 * a copy of the License at
robert.swiecki@gmail.com3b630b42015-02-16 10:53:53 +000013 *
robert.swiecki@gmail.com772b33d2015-02-14 20:35:00 +000014 * http://www.apache.org/licenses/LICENSE-2.0
robert.swiecki@gmail.com3b630b42015-02-16 10:53:53 +000015 *
robert.swiecki@gmail.com772b33d2015-02-14 20:35:00 +000016 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
19 * implied. See the License for the specific language governing
20 * permissions and limitations under the License.
robert.swiecki@gmail.com3b630b42015-02-16 10:53:53 +000021 *
robert.swiecki@gmail.com772b33d2015-02-14 20:35:00 +000022 */
robert.swiecki3bb518c2010-10-14 00:48:24 +000023
Jagger876a74c2016-02-09 22:09:11 +010024#ifndef _HF_UTIL_H_
25#define _HF_UTIL_H_
robert.swiecki3bb518c2010-10-14 00:48:24 +000026
robert.swiecki@gmail.com36700b52015-02-22 05:03:16 +000027#include <stdarg.h>
robert.swiecki3bb518c2010-10-14 00:48:24 +000028#include <stdint.h>
29
Jagger6caced32016-03-10 21:42:23 +010030#define MX_LOCK(m) util_mutexLock(m, __func__, __LINE__)
31#define MX_UNLOCK(m) util_mutexUnlock(m, __func__, __LINE__)
Jagger4fe18692016-04-22 23:15:07 +020032#define MX_SCOPED_LOCK(m) MX_LOCK(m); defer { MX_UNLOCK(m); }
Jagger6caced32016-03-10 21:42:23 +010033
Robert Swiecki3bfc33c2016-03-14 18:12:41 +010034extern void *util_Malloc(size_t sz);
35
Robert Swieckiac56a502016-03-17 18:59:46 +010036extern void *util_Calloc(size_t sz);
37
38extern void *util_MMap(size_t sz);
39
Jagger6539b3a2016-04-06 02:32:50 +020040extern char *util_StrDup(const char *s);
41
robert.swiecki@gmail.com90e99112015-02-15 02:05:14 +000042extern uint64_t util_rndGet(uint64_t min, uint64_t max);
robert.swiecki3bb518c2010-10-14 00:48:24 +000043
robert.swiecki@gmail.com89cc38c2015-02-23 02:52:08 +000044extern void util_rndBuf(uint8_t * buf, size_t sz);
45
robert.swiecki@gmail.com9e2d43d2015-02-16 12:17:39 +000046extern int util_ssnprintf(char *str, size_t size, const char *format, ...);
47
48extern int util_vssnprintf(char *str, size_t size, const char *format, va_list ap);
robert.swiecki@gmail.come7190b92015-02-14 23:05:42 +000049
Robert Swiecki81c6a0d2015-09-08 15:43:20 +020050extern void util_getLocalTime(const char *fmt, char *buf, size_t len, time_t tm);
robert.swiecki3bb518c2010-10-14 00:48:24 +000051
robert.swieckiaac72e02010-12-13 19:49:15 +000052extern void util_nullifyStdio(void);
robert.swiecki3bb518c2010-10-14 00:48:24 +000053
Robert Swiecki1e1b3532016-03-10 18:43:28 +010054extern bool util_redirectStdin(const char *inputFile);
robert.swiecki3bb518c2010-10-14 00:48:24 +000055
groebert@google.com1bd4c212013-06-19 11:13:56 +000056extern uint64_t util_hash(const char *buf, size_t len);
57
robert.swiecki@gmail.com3213a112015-03-12 01:42:02 +000058extern int64_t util_timeNowMillis(void);
59
Anestis Bechtsoudisa16f70f2016-01-03 13:03:21 +020060extern uint64_t util_getUINT32(const uint8_t * buf);
Anestis Bechtsoudisbe0ac7b2015-12-26 15:38:47 +020061extern uint64_t util_getUINT64(const uint8_t * buf);
robert.swiecki@gmail.com549ff182015-02-28 22:38:00 +000062
Jagger6caced32016-03-10 21:42:23 +010063extern void util_mutexLock(pthread_mutex_t * mutex, const char *func, int line);
64extern void util_mutexUnlock(pthread_mutex_t * mutex, const char *func, int line);
Jagger421aca82015-09-05 14:09:47 +020065
Anestis Bechtsoudisd59af692015-09-21 15:15:05 +030066extern int64_t fastArray64Search(uint64_t * array, size_t arraySz, uint64_t key);
67
Anestis Bechtsoudis413cb132016-02-07 12:59:00 +020068extern bool util_isANumber(const char *s);
69
robert.swiecki3bb518c2010-10-14 00:48:24 +000070#endif