mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-11-26 19:25:02 +00:00
When doing a migration, try to guess at a smaller minimum size for the initial filesystem so that systems with giant drives are not needlessly penalized. Start with an even smaller initial filesystem size (16M). Move debug time counters into the main .o file to avoid compiler insanity when turning debug on and off. BUG=chromium-os:22172 TEST=link build & boot, manual testing Change-Id: I47c3ffb6e4cd88c4f0ead6fa21724704c7ed1630 Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/25638 Reviewed-by: Elly Jones <ellyjones@chromium.org>
145 lines
3.6 KiB
C
145 lines
3.6 KiB
C
/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*
|
|
* Private header file for mount-encrypted helper tool.
|
|
*/
|
|
#ifndef _MOUNT_ENCRYPTED_H_
|
|
#define _MOUNT_ENCRYPTED_H_
|
|
|
|
/* #define DEBUG_ENABLED 1 */
|
|
#define DEBUG_TIME_DELTA 1
|
|
|
|
#include <openssl/err.h>
|
|
#include <openssl/sha.h>
|
|
|
|
#define DIGEST_LENGTH SHA256_DIGEST_LENGTH
|
|
|
|
#define _ERROR(f, a...) do { \
|
|
fprintf(stderr, "ERROR[pid:%d] %s (%s, %d): ", \
|
|
getpid(), __func__, __FILE__, __LINE__); \
|
|
fprintf(stderr, f, ## a); \
|
|
} while (0)
|
|
#define ERROR(f, a...) do { \
|
|
_ERROR(f, ## a); \
|
|
fprintf(stderr, "\n"); \
|
|
fflush(stderr); \
|
|
} while (0)
|
|
#define PERROR(f, a...) do { \
|
|
_ERROR(f, ## a); \
|
|
fprintf(stderr, ": %s\n", strerror(errno)); \
|
|
fflush(stderr); \
|
|
} while (0)
|
|
|
|
#define SSL_ERROR(f, a...) do { \
|
|
ERR_load_crypto_strings(); \
|
|
_ERROR(f, ## a); \
|
|
fprintf(stderr, "%s\n", ERR_error_string(ERR_get_error(), NULL)); \
|
|
fflush(stderr); \
|
|
} while (0)
|
|
|
|
#if DEBUG_ENABLED
|
|
extern struct timeval tick;
|
|
extern struct timeval tick_start;
|
|
# define TICK_INIT() do { \
|
|
gettimeofday(&tick, NULL); \
|
|
tick_start = tick; \
|
|
} while (0)
|
|
# ifdef DEBUG_TIME_DELTA
|
|
/* This timeval helper copied from glibc manual. */
|
|
static inline int timeval_subtract(struct timeval *result,
|
|
struct timeval *x,
|
|
struct timeval *y)
|
|
{
|
|
/* Perform the carry for the later subtraction by updating y. */
|
|
if (x->tv_usec < y->tv_usec) {
|
|
int nsec = (y->tv_usec - x->tv_usec) / 1000000 + 1;
|
|
y->tv_usec -= 1000000 * nsec;
|
|
y->tv_sec += nsec;
|
|
}
|
|
if (x->tv_usec - y->tv_usec > 1000000) {
|
|
int nsec = (x->tv_usec - y->tv_usec) / 1000000;
|
|
y->tv_usec += 1000000 * nsec;
|
|
y->tv_sec -= nsec;
|
|
}
|
|
|
|
/* Compute the time remaining to wait.
|
|
* tv_usec is certainly positive.
|
|
*/
|
|
result->tv_sec = x->tv_sec - y->tv_sec;
|
|
result->tv_usec = x->tv_usec - y->tv_usec;
|
|
|
|
/* Return 1 if result is negative. */
|
|
return x->tv_sec < y->tv_sec;
|
|
}
|
|
# define TICK_REPORT() do { \
|
|
struct timeval now, diff; \
|
|
gettimeofday(&now, NULL); \
|
|
timeval_subtract(&diff, &now, &tick); \
|
|
printf("\tTook: [pid:%d, %2lu.%06lus]\n", getpid(), \
|
|
(unsigned long)diff.tv_sec, (unsigned long)diff.tv_usec); \
|
|
tick = now; \
|
|
} while (0)
|
|
# else
|
|
# define TICK_REPORT() do { \
|
|
gettimeofday(&tick, NULL); \
|
|
printf("[%2d.%06d] ", (int)tick.tv_sec, (int)tick.tv_usec); \
|
|
} while (0)
|
|
# endif
|
|
# define TICK_DONE() do { \
|
|
struct timeval tick_done; \
|
|
TICK_REPORT(); \
|
|
timeval_subtract(&tick_done, &tick, &tick_start); \
|
|
printf("Process Lifetime: [pid:%d, %2d.%06ds]\n", getpid(), \
|
|
(int)tick_done.tv_sec, (int)tick_done.tv_usec); \
|
|
} while (0)
|
|
#else
|
|
# define TICK_INIT() do { } while (0)
|
|
# define TICK_REPORT() do { } while (0)
|
|
# define TICK_DONE() do { } while (0)
|
|
#endif
|
|
|
|
#define _INFO(f, a...) do { \
|
|
printf("[pid:%d] ", getpid()); \
|
|
printf(f, ## a); \
|
|
printf("\n"); \
|
|
fflush(stdout); \
|
|
} while (0)
|
|
#define INFO(f, a...) do { \
|
|
TICK_REPORT(); \
|
|
_INFO(f, ## a); \
|
|
} while (0)
|
|
#define INFO_INIT(f, a...) do { \
|
|
TICK_INIT(); \
|
|
INFO(f, ## a); \
|
|
} while (0)
|
|
#define INFO_DONE(f, a...) do { \
|
|
TICK_DONE(); \
|
|
INFO(f, ## a); \
|
|
} while (0)
|
|
#if DEBUG_ENABLED
|
|
# define DEBUG(f, a...) do { \
|
|
TICK_REPORT(); \
|
|
_INFO(f, ## a); \
|
|
} while (0)
|
|
#else
|
|
# define DEBUG(f, a...) do { } while (0)
|
|
#endif
|
|
|
|
#if DEBUG_ENABLED
|
|
static inline void debug_dump_hex(const char *name, uint8_t *data,
|
|
uint32_t size)
|
|
{
|
|
int i;
|
|
printf("%s: ", name);
|
|
for (i = 0; i < size; i++) {
|
|
printf("%02x ", data[i]);
|
|
}
|
|
printf("\n");
|
|
}
|
|
#else
|
|
# define debug_dump_hex(n, d, s) do { } while (0)
|
|
#endif
|
|
|
|
#endif /* _MOUNT_ENCRYPTED_H_ */
|