From f778490d8e2d4089ae3acd06064ffea01fffe682 Mon Sep 17 00:00:00 2001 From: gcontini <1121667+gcontini@users.noreply.github.com> Date: 周三, 14 10月 2020 23:13:20 +0800 Subject: [PATCH] debug logs --- src/library/os/linux/os_linux.cpp | 69 +++++++++++++++------------------- 1 files changed, 31 insertions(+), 38 deletions(-) diff --git a/src/library/os/linux/os_linux.cpp b/src/library/os/linux/os_linux.cpp index 57fb028..45c2f61 100644 --- a/src/library/os/linux/os_linux.cpp +++ b/src/library/os/linux/os_linux.cpp @@ -1,13 +1,16 @@ #include <paths.h> #include <sys/stat.h> #include <stdio.h> +#include <cerrno> +#include <cstring> +#include <string> #include "../os.h" #include "../../base/logger.h" #include <mntent.h> #include <dirent.h> #include <sys/utsname.h> -#ifdef _DEBUG +#ifndef NDEBUG #include <valgrind/memcheck.h> #endif @@ -52,7 +55,7 @@ free(hexuuid); } -#define MAX_UNITS 20 +#define MAX_UNITS 40 FUNCTION_RETURN getDiskInfos(DiskInfo *diskInfos, size_t *disk_info_size) { struct stat mount_stat, sym_stat; /*static char discard[1024]; @@ -89,9 +92,10 @@ } currentDrive = 0; - while (NULL != (ent = getmntent(aFile))) { + while (NULL != (ent = getmntent(aFile)) && currentDrive < maxDrives) { if ((strncmp(ent->mnt_type, "ext", 3) == 0 || strncmp(ent->mnt_type, "xfs", 3) == 0 || - strncmp(ent->mnt_type, "vfat", 4) == 0 || strncmp(ent->mnt_type, "ntfs", 4) == 0) && + strncmp(ent->mnt_type, "vfat", 4) == 0 || strncmp(ent->mnt_type, "ntfs", 4) == 0 || + strncmp(ent->mnt_type, "btr", 3) == 0) && ent->mnt_fsname != NULL && strncmp(ent->mnt_fsname, "/dev/", 5) == 0) { if (stat(ent->mnt_fsname, &mount_stat) == 0) { drive_found = -1; @@ -101,7 +105,7 @@ } } if (drive_found == -1) { - LOG_DEBUG("mntent: %s %s %d\n", ent->mnt_fsname, ent->mnt_dir, + LOG_DEBUG("mntent fs:[%s],dir:[%s],inode:[%d]\n", ent->mnt_fsname, ent->mnt_dir, (unsigned long int)mount_stat.st_ino); strncpy(tmpDrives[currentDrive].device, ent->mnt_fsname, 255 - 1); statDrives[currentDrive] = mount_stat.st_ino; @@ -115,6 +119,8 @@ } else { tmpDrives[drive_found].preferred = 0; } + } else { + LOG_DEBUG("Error %s during stat of %s \n", std::strerror(errno), ent->mnt_fsname); } } } @@ -126,42 +132,51 @@ result = (currentDrive > 0) ? FUNC_RET_OK : FUNC_RET_NOT_AVAIL; } else if (*disk_info_size >= currentDrive) { disk_by_uuid_dir = opendir("/dev/disk/by-uuid"); - if (disk_by_uuid_dir == NULL) { + if (disk_by_uuid_dir == nullptr) { LOG_WARN("Open /dev/disk/by-uuid fail"); free(statDrives); return FUNC_RET_ERROR; } result = FUNC_RET_OK; *disk_info_size = currentDrive; - while ((dir = readdir(disk_by_uuid_dir)) != NULL) { - strcpy(cur_dir, "/dev/disk/by-uuid/"); - strncat(cur_dir, dir->d_name, 200); - if (stat(cur_dir, &sym_stat) == 0) { + + while ((dir = readdir(disk_by_uuid_dir)) != nullptr) { + std::string cur_dir("/dev/disk/by-uuid/"); + cur_dir += dir->d_name; + + bool found = false; + if (stat(cur_dir.c_str(), &sym_stat) == 0) { for (i = 0; i < currentDrive; i++) { if (sym_stat.st_ino == statDrives[i]) { + found = true; parseUUID(dir->d_name, tmpDrives[i].disk_sn, sizeof(tmpDrives[i].disk_sn)); -#ifdef _DEBUG +#ifndef NDEBUG VALGRIND_CHECK_VALUE_IS_DEFINED(tmpDrives[i].device); - - LOG_DEBUG("uuid %d %s %02x%02x%02x%02x\n", i, tmpDrives[i].device, tmpDrives[i].disk_sn[0], + LOG_DEBUG("uuid %d %s %02x%02x%02x%02x", i, tmpDrives[i].device, tmpDrives[i].disk_sn[0], tmpDrives[i].disk_sn[1], tmpDrives[i].disk_sn[2], tmpDrives[i].disk_sn[3]); #endif } } + if (!found) { + LOG_DEBUG("Drive [%s], num [%d] inode [%d] did not match any existing drive", cur_dir.c_str(), + (unsigned long int)sym_stat.st_ino); + } + } else { + LOG_DEBUG("Error %s during stat of %s", std::strerror(errno), cur_dir.c_str()); } } closedir(disk_by_uuid_dir); disk_by_label = opendir("/dev/disk/by-label"); - if (disk_by_label != NULL) { - while ((dir = readdir(disk_by_label)) != NULL) { + if (disk_by_label != nullptr) { + while ((dir = readdir(disk_by_label)) != nullptr) { strcpy(cur_dir, "/dev/disk/by-label/"); strcat(cur_dir, dir->d_name); if (stat(cur_dir, &sym_stat) == 0) { for (i = 0; i < currentDrive; i++) { if (sym_stat.st_ino == statDrives[i]) { strncpy(tmpDrives[i].label, dir->d_name, 255 - 1); - printf("label %d %s %s\n", i, tmpDrives[i].label, tmpDrives[i].device); + LOG_DEBUG("label %d %s %s", i, tmpDrives[i].label, tmpDrives[i].device); } } } @@ -174,28 +189,6 @@ free(statDrives); return result; } - -static void _getCpuid(unsigned int *p, unsigned int ax) { - __asm __volatile( - "movl %%ebx, %%esi\n\t" - "cpuid\n\t" - "xchgl %%ebx, %%esi" - : "=a"(p[0]), "=S"(p[1]), "=c"(p[2]), "=d"(p[3]) - : "0"(ax)); -} - -FUNCTION_RETURN getCpuId(unsigned char identifier[6]) { - unsigned int i; - unsigned int cpuinfo[4] = {0, 0, 0, 0}; - _getCpuid(cpuinfo, 0); - for (i = 0; i < 3; i++) { - identifier[i * 2] = cpuinfo[i] & 0xFF; - identifier[i * 2 + 1] = (cpuinfo[i] & 0xFF00) >> 8; - } - return FUNC_RET_OK; -} - - FUNCTION_RETURN getMachineName(unsigned char identifier[6]) { static struct utsname u; -- Gitblit v1.9.1