⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tracing.c

📁 usb to rs232 converter source code
💻 C
字号:
/* * This file is a part of BeOS USB Serial driver project. * Copyright (c) 2003 by Siarzuk Zharski <imker@gmx.li> * * This file may be used under the terms of the BSD License * See the file "License" for details. *  * $Source: /cvsroot/sis4be/usb_serial/tracing.c,v $ * $Author: zharik $ * $Revision: 1.3 $ * $Date: 2003/10/05 17:44:52 $ * */#include <Drivers.h>#include <USB.h>#include <ttylayer.h>#include <stdio.h> //sprintf#include <unistd.h> //posix file i/o - create, write, close #include <driver_settings.h> #include "driver.h"//#include "dano_hack.h"#if DEBUGbool b_log = true;#elsebool b_log = false;#endifbool b_log_file = false;bool b_log_append = false;bool b_log_funcalls = false;bool b_log_funcret  = false;bool b_log_funcres  = false;bool b_acm_support = true;static const char *private_log_path="/boot/home/"DRIVER_NAME".log";static sem_id loglock;void load_setting(){  void *settingshandle;   settingshandle = load_driver_settings(DRIVER_NAME); #if !DEBUG  b_log = get_driver_boolean_parameter(            settingshandle, "debug_output", b_log, true);#endif  b_log_file = get_driver_boolean_parameter(            settingshandle, "debug_output_in_file", b_log_file, true);  b_log_append = ! get_driver_boolean_parameter(            settingshandle, "debug_output_file_rewrite", !b_log_append, true);  b_log_funcalls = get_driver_boolean_parameter(            settingshandle, "debug_trace_func_calls", b_log_funcalls, false);  b_log_funcret = get_driver_boolean_parameter(            settingshandle, "debug_trace_func_returns", b_log_funcret, false);  b_log_funcres = get_driver_boolean_parameter(            settingshandle, "debug_trace_func_results", b_log_funcres, false);  b_acm_support = get_driver_boolean_parameter(            settingshandle, "support_acm_devices", b_acm_support, true);  unload_driver_settings(settingshandle);}void create_log(){  int flags = O_WRONLY | O_CREAT | ((!b_log_append) ? O_TRUNC : 0);  if(!b_log_file)    return;  close(open(private_log_path, flags, 0666));  loglock = create_sem(1, DRIVER_NAME"-logging");}void usb_serial_trace(bool b_force, char *fmt, ...){  if(!(b_force || b_log))    return;  {    va_list arg_list;    static char *prefix = "\33[32m"DRIVER_NAME":\33[0m";    static char buf[1024];    char *buf_ptr = buf;    if(!b_log_file){      strcpy(buf, prefix);      buf_ptr += strlen(prefix);    }    va_start(arg_list, fmt);    vsprintf(buf_ptr, fmt, arg_list);    va_end(arg_list);    if(b_log_file){      int fd;      acquire_sem(loglock);      fd = open(private_log_path, O_WRONLY | O_APPEND);      write(fd, buf, strlen(buf));      close(fd);      release_sem(loglock);    }    else      dprintf(buf);  }}void trace_ddomain(struct ddomain *dd){  TRACE("struct ddomain\n"        " ddrover: %08x\n"        " bg:%d, locked:%d\n", dd->r, dd->bg, dd->locked);}void trace_termios(struct termios *tios){  TRACE("struct termios\n"        "  c_iflag:%08x\n"        "  c_oflag:%08x\n"        "  c_cflag:%08x\n"        "  c_lflag:%08x\n"        "  c_line: %08x\n"        "  c_ixxxxx:%08x\n"        "  c_oxxxxx:%08x\n"        "  c_cc [%02x, %02x, %02x, %02x, %02x, %02x, "        "%02x, %02x, %02x, %02x, %02x]\n",           tios->c_iflag, tios->c_oflag, tios->c_cflag, tios->c_lflag,            tios->c_line, tios->c_ixxxxx, tios->c_oxxxxx,            tios->c_cc[0], tios->c_cc[1], tios->c_cc[2], tios->c_cc[3],            tios->c_cc[4], tios->c_cc[5], tios->c_cc[6], tios->c_cc[7],            tios->c_cc[8], tios->c_cc[9], tios->c_cc[10]);}void trace_str(struct str *str){  TRACE("struct str\n"        "  buffer:%08x\n"        "  bufsize:%d\n"        "  count:%d\n"        "  tail:%d\n"        "  allocated: %d\n",           str->buffer,           str->bufsize, str->count, str->tail,           str->allocated); }void trace_winsize(struct winsize *ws){  TRACE("struct winsize\n"        "  ws_row:%d\n"        "  ws_col:%d\n"        "  ws_xpixel:%d\n"        "  ws_ypixel:%d\n",           ws->ws_row, ws->ws_col, ws->ws_xpixel, ws->ws_ypixel);}void trace_tty(struct tty *tty){  TRACE("\n>> STRUCT tty\n"        "  nopen:%d, flags:%08x,\n",        tty->nopen, tty->flags);  TRACE("\n  ddomain dd:\n");  trace_ddomain(&tty->dd);  TRACE("\n  ddomain ddi:\n");  trace_ddomain(&tty->ddi);  TRACE("  pgid: %08x\n", tty->pgid);    TRACE("\n termios t:");  trace_termios(&tty->t);  TRACE("  iactivity: %d, ibusy:%d\n", tty->iactivity, tty->ibusy);                          TRACE("\n  str istr:\n");  trace_str(&tty->istr);  TRACE("\n  str rstr:\n");  trace_str(&tty->rstr);  TRACE("\n  str ostr:\n");  trace_str(&tty->ostr);                    TRACE("\n  winsize wsize:\n");  trace_winsize(&tty->wsize);          TRACE("  service: %08x\n", tty->service);  TRACE("\n<< STRUCT tty\n");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -