|
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 |
1.8.1.2