InnoDB Plugin
1.0
|
#include "univ.i"
#include "db0err.h"
#include "os0sync.h"
#include <time.h>
#include <ctype.h>
#include <stdarg.h>
#include "ut0ut.ic"
Go to the source code of this file.
Data Structures | |
struct | ut_when_dtor< F > |
Macros | |
#define | TEMP_INDEX_PREFIX '\377' |
#define | TEMP_INDEX_PREFIX_STR "\377" |
#define | UT_RELAX_CPU() ((void)0) /* avoid warning for an empty statement */ |
#define | UT_WAIT_FOR(cond, max_wait_us) |
#define | ut_is_2pow(n) UNIV_LIKELY(!((n) & ((n) - 1))) |
#define | ut_2pow_remainder(n, m) ((n) & ((m) - 1)) |
#define | ut_2pow_round(n, m) ((n) & ~((m) - 1)) |
#define | ut_calc_align_down(n, m) ut_2pow_round(n, m) |
#define | ut_calc_align(n, m) (((n) + ((m) - 1)) & ~((m) - 1)) |
#define | UT_BITS_IN_BYTES(b) (((b) + 7) / 8) |
#define | ut_vsnprintf(buf, size, fmt, ap) ((void) vsnprintf(buf, size, fmt, ap)) |
#define | ut_snprintf snprintf |
Typedefs | |
typedef time_t | ib_time_t |
Functions | |
template<class T > | |
T | ut_min (T a, T b) |
template<class T > | |
T | ut_max (T a, T b) |
UNIV_INLINE ulint | ut_min (ulint n1, ulint n2) |
UNIV_INLINE ulint | ut_max (ulint n1, ulint n2) |
UNIV_INLINE void | ut_pair_min (ulint *a, ulint *b, ulint a1, ulint b1, ulint a2, ulint b2) |
UNIV_INLINE int | ut_ulint_cmp (ulint a, ulint b) |
UNIV_INLINE int | ut_pair_cmp (ulint a1, ulint a2, ulint b1, ulint b2) |
UNIV_INLINE ulint | ut_2_log (ulint n) |
UNIV_INLINE ulint | ut_2_exp (ulint n) |
UNIV_INTERN ulint | ut_2_power_up (ulint n)) |
UNIV_INTERN ib_time_t | ut_time (void) |
UNIV_INTERN int | ut_usectime (ulint *sec, ulint *ms) |
UNIV_INTERN ullint | ut_time_us (ullint *tloc) |
UNIV_INTERN ulint | ut_time_ms (void) |
UNIV_INTERN double | ut_difftime (ib_time_t time2, ib_time_t time1) |
UNIV_INTERN void | ut_print_timestamp (FILE *file) UNIV_COLD) |
UNIV_INTERN void | ut_sprintf_timestamp (char *buf) |
UNIV_INTERN ulint | ut_delay (ulint delay) |
UNIV_INTERN void | ut_print_buf (FILE *file, const void *buf, ulint len) |
UNIV_INTERN void | ut_print_filename (FILE *f, const char *name) |
UNIV_INTERN void | ut_print_name (FILE *f, const trx_t *trx, ibool table_id, const char *name) |
UNIV_INTERN void | ut_print_namel (FILE *f, const trx_t *trx, ibool table_id, const char *name, ulint namelen) |
UNIV_INTERN char * | ut_format_name (const char *name, ibool is_table, char *formatted, ulint formatted_size) |
UNIV_INTERN void | ut_copy_file (FILE *dest, FILE *src) |
UNIV_INTERN const char * | ut_strerr (dberr_t num) |
UNIV_INTERN void | ut_ulint_sort (ulint *arr, ulint *aux_arr, ulint low, ulint high)) |
Various utilities
Created 1/20/1994 Heikki Tuuri
#define TEMP_INDEX_PREFIX '\377' |
Index name prefix in fast index creation
#define TEMP_INDEX_PREFIX_STR "\377" |
Index name prefix in fast index creation, as a string constant
#define ut_2pow_remainder | ( | n, | |
m | |||
) | ((n) & ((m) - 1)) |
Calculates fast the remainder of n/m when m is a power of two.
n | in: numerator |
m | in: denominator, must be a power of two |
#define ut_2pow_round | ( | n, | |
m | |||
) | ((n) & ~((m) - 1)) |
Calculates the biggest multiple of m that is not bigger than n when m is a power of two. In other words, rounds n down to m * k.
n | in: number to round down |
m | in: alignment, must be a power of two |
#define UT_BITS_IN_BYTES | ( | b | ) | (((b) + 7) / 8) |
Determine how many bytes (groups of 8 bits) are needed to
store the given number of bits.
b | in: bits |
#define ut_calc_align | ( | n, | |
m | |||
) | (((n) + ((m) - 1)) & ~((m) - 1)) |
Calculates the smallest multiple of m that is not smaller than n when m is a power of two. In other words, rounds n up to m * k.
n | in: number to round up |
m | in: alignment, must be a power of two |
#define ut_calc_align_down | ( | n, | |
m | |||
) | ut_2pow_round(n, m) |
Align a number down to a multiple of a power of two.
n | in: number to round down |
m | in: alignment, must be a power of two |
#define ut_is_2pow | ( | n | ) | UNIV_LIKELY(!((n) & ((n) - 1))) |
Determines if a number is zero or a power of two.
n | in: number |
#define ut_snprintf snprintf |
A wrapper for snprintf(3), formatted output conversion into a limited buffer.
#define ut_vsnprintf | ( | buf, | |
size, | |||
fmt, | |||
ap | |||
) | ((void) vsnprintf(buf, size, fmt, ap)) |
A wrapper for vsnprintf(3), formatted output conversion into a limited buffer. Note: this function DOES NOT return the number of characters that would have been printed if the buffer was unlimited because VC's _vsnprintf() returns -1 in this case and we would need to call _vscprintf() in addition to estimate that but we would need another copy of "ap" for that and VC does not provide va_copy().
#define UT_WAIT_FOR | ( | cond, | |
max_wait_us | |||
) |
Delays execution for at most max_wait_us microseconds or returns earlier if cond becomes true.
cond | in: condition to wait for; evaluated every 2 ms |
max_wait_us | in: maximum delay to wait, in microseconds |
typedef time_t ib_time_t |
Time stamp
UNIV_INLINE ulint ut_2_exp | ( | ulint | n | ) |
Calculates 2 to power n.
Calculates 2 to power n.
n | in: number |
UNIV_INLINE ulint ut_2_log | ( | ulint | n | ) |
Calculates fast the 2-logarithm of a number, rounded upward to an integer.
Calculates fast the 2-logarithm of a number, rounded upward to an integer.
n | in: number != 0 |
UNIV_INTERN ulint ut_2_power_up | ( | ulint | n | ) |
Calculates fast the number rounded up to the nearest power of 2.
n | in: number != 0 |
UNIV_INTERN void ut_copy_file | ( | FILE * | dest, |
FILE * | src | ||
) |
Catenate files. in: input file to be appended to output
dest | in: output file |
UNIV_INTERN ulint ut_delay | ( | ulint | delay | ) |
Runs an idle loop on CPU. The argument gives the desired delay in microseconds on 100 MHz Pentium + Visual C++.
Returns the difference of two times in seconds.
time2 | in: time |
UNIV_INTERN char* ut_format_name | ( | const char * | name, |
ibool | is_table, | ||
char * | formatted, | ||
ulint | formatted_size | ||
) |
Formats a table or index name, quoted as an SQL identifier. If the name contains a slash '/', the result will contain two identifiers separated by a period (.), as in SQL database_name.identifier.
name | in: table or index name, must be '\0'-terminated |
is_table | in: if TRUE then 'name' is a table name |
formatted | out: formatted result, will be '\0'-terminated |
UNIV_INLINE ulint ut_max | ( | ulint | n1, |
ulint | n2 | ||
) |
Calculates the maximum of two ulints.
Calculates the maximum of two ulints.
n1 | in: first number |
n2 | in: second number |
UNIV_INLINE ulint ut_min | ( | ulint | n1, |
ulint | n2 | ||
) |
Calculates the minimum of two ulints.
Calculates the minimum of two ulints.
n1 | in: first number |
n2 | in: second number |
UNIV_INLINE int ut_pair_cmp | ( | ulint | a1, |
ulint | a2, | ||
ulint | b1, | ||
ulint | b2 | ||
) |
Compares two pairs of ulints.
Compares two pairs of ulints.
a1 | in: more significant part of first pair |
a2 | in: less significant part of first pair |
b1 | in: more significant part of second pair |
b2 | in: less significant part of second pair |
UNIV_INLINE void ut_pair_min | ( | ulint * | a, |
ulint * | b, | ||
ulint | a1, | ||
ulint | b1, | ||
ulint | a2, | ||
ulint | b2 | ||
) |
Calculates minimum of two ulint-pairs. in: less significant part of second pair
Calculates minimum of two ulint-pairs.
a | out: more significant part of minimum |
b | out: less significant part of minimum |
a1 | in: more significant part of first pair |
b1 | in: less significant part of first pair |
a2 | in: more significant part of second pair |
b2 | in: less significant part of second pair |
UNIV_INTERN void ut_print_buf | ( | FILE * | file, |
const void * | buf, | ||
ulint | len | ||
) |
Prints the contents of a memory buffer in hex and ascii. in: length of the buffer
file | in: file where to print |
buf | in: memory buffer |
UNIV_INTERN void ut_print_filename | ( | FILE * | f, |
const char * | name | ||
) |
Outputs a NUL-terminated file name, quoted with apostrophes. in: name to print
f | in: output stream |
Outputs a fixed-length string, quoted as an SQL identifier. If the string contains a slash '/', the string will be output as two identifiers separated by a period (.), as in SQL database_name.identifier. in: name to print
f | in: output stream |
trx | in: transaction |
table_id | in: TRUE=print a table name, FALSE=print other identifier |
UNIV_INTERN void ut_print_namel | ( | FILE * | f, |
const trx_t * | trx, | ||
ibool | table_id, | ||
const char * | name, | ||
ulint | namelen | ||
) |
Outputs a fixed-length string, quoted as an SQL identifier. If the string contains a slash '/', the string will be output as two identifiers separated by a period (.), as in SQL database_name.identifier. in: length of name
f | in: output stream |
trx | in: transaction (NULL=no quotes) |
table_id | in: TRUE=print a table name, FALSE=print other identifier |
name | in: name to print |
UNIV_INTERN void ut_print_timestamp | ( | FILE * | file | ) |
Prints a timestamp to a file.
file | in: file where to print |
UNIV_INTERN void ut_sprintf_timestamp | ( | char * | buf | ) |
Sprintfs a timestamp to a buffer, 13..14 chars plus terminating NUL. in: buffer where to sprintf
UNIV_INTERN const char* ut_strerr | ( | dberr_t | num | ) |
Convert an error number to a human readable text message. The returned string is static and should not be freed or modified.
UNIV_INTERN ib_time_t ut_time | ( | void | ) |
Returns system time. We do not specify the format of the time returned: the only way to manipulate it is to use the function ut_difftime.
UNIV_INTERN ulint ut_time_ms | ( | void | ) |
Returns the number of milliseconds since some epoch. The value may wrap around. It should only be used for heuristic purposes.
UNIV_INTERN ullint ut_time_us | ( | ullint * | tloc | ) |
Returns the number of microseconds since epoch. Similar to time(3), the return value is also stored in *tloc, provided that tloc is non-NULL.
UNIV_INLINE int ut_ulint_cmp | ( | ulint | a, |
ulint | b | ||
) |
Compares two ulints.
Compares two ulints.
a | in: ulint |
b | in: ulint |
UNIV_INTERN void ut_ulint_sort | ( | ulint * | arr, |
ulint * | aux_arr, | ||
ulint | low, | ||
ulint | high | ||
) |
arr | in/out: array to sort |
aux_arr | in/out: aux array to use in sort |
low | in: lower bound |
high | in: upper bound |
UNIV_INTERN int ut_usectime | ( | ulint * | sec, |
ulint * | ms | ||
) |
Returns system time. Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
sec | out: seconds since the Epoch |