mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-07 02:20:42 +02:00
Merge pull request #179 from slsdetectorgroup/kernelcheck
g2 and m3: kernel checks only when its too old
This commit is contained in:
commit
2805359cd0
Binary file not shown.
@ -181,19 +181,7 @@ int checkKernelVersion() {
|
|||||||
#ifdef VIRTUAL
|
#ifdef VIRTUAL
|
||||||
return OK;
|
return OK;
|
||||||
#endif
|
#endif
|
||||||
char output[256];
|
return Nios_checkKernelVersion(KERNEL_DATE_VRSN);
|
||||||
memset(output, 0, 256);
|
|
||||||
FILE *sysFile = popen("uname -a | cut -d ' ' -f5-10", "r");
|
|
||||||
fgets(output, sizeof(output), sysFile);
|
|
||||||
pclose(sysFile);
|
|
||||||
|
|
||||||
if (strstr(output, KERNEL_DATE_VRSN) == NULL) {
|
|
||||||
LOG(logERROR, ("Kernel Version Incompatible! Expected: %s, Got: %s\n",
|
|
||||||
KERNEL_DATE_VRSN, output));
|
|
||||||
return FAIL;
|
|
||||||
}
|
|
||||||
LOG(logINFO, ("Kernel Version Compatible: %s\n", output));
|
|
||||||
return OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int checkType() {
|
int checkType() {
|
||||||
|
Binary file not shown.
@ -167,19 +167,7 @@ int checkKernelVersion() {
|
|||||||
#ifdef VIRTUAL
|
#ifdef VIRTUAL
|
||||||
return OK;
|
return OK;
|
||||||
#endif
|
#endif
|
||||||
char output[256];
|
return Nios_checkKernelVersion(KERNEL_DATE_VRSN);
|
||||||
memset(output, 0, 256);
|
|
||||||
FILE *sysFile = popen("uname -a | cut -d ' ' -f5-10", "r");
|
|
||||||
fgets(output, sizeof(output), sysFile);
|
|
||||||
pclose(sysFile);
|
|
||||||
|
|
||||||
if (strstr(output, KERNEL_DATE_VRSN) == NULL) {
|
|
||||||
LOG(logERROR, ("Kernel Version Incompatible! Expected: %s, Got: %s\n",
|
|
||||||
KERNEL_DATE_VRSN, output));
|
|
||||||
return FAIL;
|
|
||||||
}
|
|
||||||
LOG(logINFO, ("Kernel Version Compatible: %s\n", output));
|
|
||||||
return OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int checkType() {
|
int checkType() {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a value from a range to a different range (eg voltage to dac or vice
|
* Convert a value from a range to a different range (eg voltage to dac or vice
|
||||||
@ -17,3 +18,5 @@ int ConvertToDifferentRange(int inputMin, int inputMax, int outputMin,
|
|||||||
int outputMax, int inputValue, int *outputValue);
|
int outputMax, int inputValue, int *outputValue);
|
||||||
|
|
||||||
int getAbsPath(char *buf, size_t bufSize, char *fname);
|
int getAbsPath(char *buf, size_t bufSize, char *fname);
|
||||||
|
|
||||||
|
int GetTimeFromString(char *buf, time_t *result);
|
@ -87,3 +87,7 @@ int mapCSP0(void);
|
|||||||
* Get Nios base address
|
* Get Nios base address
|
||||||
*/
|
*/
|
||||||
u_int32_t *Nios_getBaseAddress();
|
u_int32_t *Nios_getBaseAddress();
|
||||||
|
|
||||||
|
/** check kernel version against expected version string (complain if too old)
|
||||||
|
* @returns OK or FAIL */
|
||||||
|
int Nios_checkKernelVersion(char *expectedVersion);
|
@ -1,3 +1,4 @@
|
|||||||
|
#define _GNU_SOURCE // needed for strptime to be at the top
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "clogger.h"
|
#include "clogger.h"
|
||||||
#include "sls_detector_defs.h"
|
#include "sls_detector_defs.h"
|
||||||
@ -60,3 +61,12 @@ int getAbsPath(char *buf, size_t bufSize, char *fname) {
|
|||||||
LOG(logDEBUG1, ("full path for %s: %s\n", fname, buf));
|
LOG(logDEBUG1, ("full path for %s: %s\n", fname, buf));
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int GetTimeFromString(char *buf, time_t *result) {
|
||||||
|
struct tm t;
|
||||||
|
if (NULL == strptime(buf, "%a %b %d %H:%M:%S %Z %Y", &t)) {
|
||||||
|
return FAIL;
|
||||||
|
}
|
||||||
|
*result = mktime(&t);
|
||||||
|
return OK;
|
||||||
|
}
|
@ -2,10 +2,13 @@
|
|||||||
#include "RegisterDefs.h"
|
#include "RegisterDefs.h"
|
||||||
#include "ansi.h"
|
#include "ansi.h"
|
||||||
#include "clogger.h"
|
#include "clogger.h"
|
||||||
|
#include "common.h"
|
||||||
#include "sls_detector_defs.h"
|
#include "sls_detector_defs.h"
|
||||||
|
|
||||||
#include <fcntl.h> // open
|
#include <fcntl.h> // open
|
||||||
|
#include <string.h>
|
||||||
#include <sys/mman.h> // mmap
|
#include <sys/mman.h> // mmap
|
||||||
|
#include <sys/utsname.h> // uname
|
||||||
|
|
||||||
/* global variables */
|
/* global variables */
|
||||||
u_int32_t *csp0base = 0;
|
u_int32_t *csp0base = 0;
|
||||||
@ -127,3 +130,49 @@ int mapCSP0(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
u_int32_t *Nios_getBaseAddress() { return csp0base; }
|
u_int32_t *Nios_getBaseAddress() { return csp0base; }
|
||||||
|
|
||||||
|
int Nios_checkKernelVersion(char *expectedVersion) {
|
||||||
|
// extract kernel date string
|
||||||
|
struct utsname buf;
|
||||||
|
if (uname(&buf) == -1) {
|
||||||
|
LOG(logERROR, ("Could not get kernel version\n"));
|
||||||
|
return FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove first word (#version number)
|
||||||
|
const char *ptr = strchr(buf.version, ' ');
|
||||||
|
if (ptr == NULL) {
|
||||||
|
LOG(logERROR, ("Could not parse kernel version\n"));
|
||||||
|
return FAIL;
|
||||||
|
}
|
||||||
|
char output[256];
|
||||||
|
memset(output, 0, 256);
|
||||||
|
strcpy(output, buf.version + (ptr - buf.version + 1));
|
||||||
|
|
||||||
|
// convert kernel date string into time
|
||||||
|
time_t kernelDate;
|
||||||
|
if (GetTimeFromString(output, &kernelDate) == FAIL) {
|
||||||
|
LOG(logERROR, ("Could not parse retrieved kernel date, %s\n", output));
|
||||||
|
return FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// convert expected date into time
|
||||||
|
time_t expDate;
|
||||||
|
if (GetTimeFromString(expectedVersion, &expDate) == FAIL) {
|
||||||
|
LOG(logERROR,
|
||||||
|
("Could not parse expected kernel date, %s\n", expectedVersion));
|
||||||
|
return FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare if kernel time is older than expected time
|
||||||
|
if (kernelDate < expDate) {
|
||||||
|
LOG(logERROR, ("Kernel Version Incompatible (too old)! Expected: [%s], "
|
||||||
|
"Got [%s]\n",
|
||||||
|
expectedVersion, output));
|
||||||
|
return FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG(logINFOBLUE, ("Kernel Version Compatible: %s [min.: %s]\n", output,
|
||||||
|
expectedVersion));
|
||||||
|
return OK;
|
||||||
|
}
|
@ -6,8 +6,8 @@
|
|||||||
|
|
||||||
#define APICTB 0x200910
|
#define APICTB 0x200910
|
||||||
#define APIGOTTHARD 0x200910
|
#define APIGOTTHARD 0x200910
|
||||||
#define APIGOTTHARD2 0x200910
|
|
||||||
#define APIJUNGFRAU 0x200910
|
#define APIJUNGFRAU 0x200910
|
||||||
#define APIMYTHEN3 0x200910
|
|
||||||
#define APIMOENCH 0x200910
|
#define APIMOENCH 0x200910
|
||||||
#define APIEIGER 0x200910
|
#define APIEIGER 0x200910
|
||||||
|
#define APIGOTTHARD2 0x200910
|
||||||
|
#define APIMYTHEN3 0x200910
|
||||||
|
Loading…
x
Reference in New Issue
Block a user