예제 #1
0
static void
_log_waitpid(int loglevel, int errnum, pid_t pid)
{
  char fmt[FMT_UINT];
  fmt[fmtuint(&fmt[0], pid)] = '\0';
  _log1(loglevel, "waitpid", errnum, "cannot wait child process ", &fmt[0]);
}
예제 #2
0
static void
_log_dup2(int loglevel, int errnum, int fd)
{
  char fmt[FMT_UINT];
  fmt[fmtuint(&fmt[0], fd)] = '\0';
  _log1(LOG_FATAL, "dup2", errnum, "cannot duplicated fd ", &fmt[0]);
}
예제 #3
0
static void
_log_close(int loglevel, int errnum, int fd)
{
  char fmt[FMT_UINT];
  fmt[fmtuint(&fmt[0], fd)] = '\0';
  _log1(loglevel, "close", errnum, "cannot close fd ", &fmt[0]);
}
예제 #4
0
__attribute__((noreturn)) static void
die_waithang(pid_t pid)
{
  char fmt[FMT_UINT];
  fmt[fmtuint(&fmt[0], pid)] = '\0';
  _log1(LOG_FATAL, "waitpid", ECHILD, "unwaited child process ", &fmt[0]);
  die();
}
예제 #5
0
__attribute__((noreturn)) static void
die_pollfd(int fd)
{
  char fmt[FMT_UINT];
  fmt[fmtuint(&fmt[0], fd)] = '\0';
  _log1(LOG_FATAL, "poll", 0, "cannot poll fd ", &fmt[0]);
  die();
}
예제 #6
0
static void
_log_sigaction(int loglevel, int errnum, int signum)
{
  _log1(loglevel,
        "sigaction",
        errnum,
        "cannot set handler for ",
        strsignal(signum));
}
예제 #7
0
void calculateResult()
{
	long x,y;
	if(stack_isempty(sd1))
	{
		x=result;
	}
	else
	{
		x=get_value_of_stack(sd1);
	}
	y=get_value_of_stack(sd2);

	//do the operation
	switch (operator)
	{
	case 0:
		result = x + y;
		break;
	case 1:
		result = x-y;
		break;
	case 2:
		result = x*y;
		break;
	case 3:
		result = x/y;
		break;
	}

	//display
//	if(stack_isempty(sd1))
//	{
		LCD_Clear();
		LCD_Gotoxy(0,0);
		char* d=(char*)malloc(digitsLength);
		LCD_SendStr(itoa(result, d, 10));

		_log("operator \0") _log1(ops[operator]) _log("\r\0")
		_log("result \0") _log(d) _log("\r\0")
//	}
//	else
//	{
//		LCD_Clear();
//		LCD_Gotoxy(0,0);
//		char* d1=(char*)malloc(digitsLength);
//		LCD_SendStr(itoa(x, d1, 10));
//		LCD_SendData(ops[operator]); //error send the op as char not int
//		char* d2=(char*)malloc(digitsLength);
//		LCD_SendStr(itoa(y, d2, 10));
//	}

	//clear stacks
	stack_Clear(sd1);
	stack_Clear(sd2);
}
예제 #8
0
static void
_log_noblock(int loglevel, int errnum, int fd)
{
  char fmt[FMT_UINT];
  fmt[fmtuint(&fmt[0], fd)] = '\0';
  _log1(loglevel,
        "fcntl",
        errnum,
        "cannot set non-blocking mode for fd ",
        &fmt[0]);
}
예제 #9
0
static void
_log_coe(int loglevel, int errnum, int fd)
{
  char fmt[FMT_UINT];
  fmt[fmtuint(&fmt[0], fd)] = '\0';
  _log1(loglevel,
        "fcntl",
        errnum,
        "cannot set close-on-exec flag for fd ",
        &fmt[0]);
}
예제 #10
0
__attribute__((noreturn)) static void
die_waitstatus(pid_t pid)
{
  char fmt[FMT_UINT];
  fmt[fmtuint(&fmt[0], pid)] = '\0';
  _log1(LOG_FATAL,
        "waitpid",
        EINVAL,
        "unexpected status from child process ",
        &fmt[0]);
  die();
}
예제 #11
0
static void
_log_fork(int loglevel, int errnum, const char *file)
{
  _log1(loglevel, "fork", errnum, "cannot fork for child process ", file);
}
예제 #12
0
static void
_log_execve(int loglevel, int errnum, const char *file)
{
  _log1(loglevel, "execve", errnum, "cannot exec child process ", file);
}
예제 #13
0
static void
_log0(int loglevel, const char *syscall, int errnum, const char *msg)
{
  _log1(loglevel, syscall, errnum, msg, 0);
}