Ignore:
Timestamp:
Apr 10, 2013, 6:47:05 PM (12 years ago)
Author:
David Azarewicz
Message:

Begin adding user info output.
Added LVM support.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/os2ahci/trace.c

    r153 r154  
    2828
    2929/* -------------------------- macros and constants ------------------------- */
    30 
    31 #define AHCI_TRACE_BUF_SIZE  0x8000U /* 32k */
    3230
    3331/* ------------------------ typedefs and structures ------------------------ */
     
    5351 *       a GDT selector for the trace ring buffer
    5452 */
    55 void trace_init(void)
     53void trace_init(u16 usBufSize)
    5654{
    5755  SEL sel = 0;
     56
     57  if (ahci_trace_buf.phys_addr) return;
    5858
    5959  /* initialize ring buffer logic */
    6060  ahci_trace_buf.writep = 0;
    6161  ahci_trace_buf.readp = 0;
    62   ahci_trace_buf.mask = AHCI_TRACE_BUF_SIZE - 1;
     62  ahci_trace_buf.mask = usBufSize - 1;
    6363
    6464  if (ahci_trace_buf.phys_addr == 0) {
    6565    /* allocate buffer */
    66     if (DevHelp_AllocPhys((ULONG) AHCI_TRACE_BUF_SIZE, MEMTYPE_ABOVE_1M,
     66    if (DevHelp_AllocPhys((ULONG) usBufSize, MEMTYPE_ABOVE_1M,
    6767                         &(ahci_trace_buf.phys_addr))) {
    6868      /* failed above 1MB, try below */
    69       if (DevHelp_AllocPhys((ULONG) AHCI_TRACE_BUF_SIZE, MEMTYPE_BELOW_1M,
     69      if (DevHelp_AllocPhys((ULONG) usBufSize, MEMTYPE_BELOW_1M,
    7070                            &(ahci_trace_buf.phys_addr))) {
    7171        /* failed, too. Give up */
    7272        ahci_trace_buf.phys_addr = 0;
    7373        cprintf("%s warning: failed to allocate %dk trace buffer\n",
    74                 drv_name, AHCI_TRACE_BUF_SIZE / 1024);
     74                drv_name, usBufSize / 1024);
    7575        return;
    7676      }
     
    8080    if (DevHelp_AllocGDTSelector(&sel, 1) ||
    8181        DevHelp_PhysToGDTSelector(ahci_trace_buf.phys_addr,
    82                                   AHCI_TRACE_BUF_SIZE, sel)) {
     82                                  usBufSize, sel)) {
    8383      /* failed; free GDT selector and physical memory we allocated before */
    8484      if (sel) {
     
    9595
    9696  }
    97 
    98 
    9997}
    10098
     
    182180  return cb_read;
    183181}
    184 
    185 #ifdef NOT_USED
    186 /******************************************************************************
    187  * return number of bytes we can read from the trace buffer
    188  */
    189 u16 trace_bytes_avail(void)
    190 {
    191 
    192   if (ahci_trace_buf.writep == ahci_trace_buf.readp ) return 0; /* buffer is empty */
    193 
    194   if (ahci_trace_buf.readp <= ahci_trace_buf.writep) {
    195     /* read pointer is smaller than write pointer; no wrap in between */
    196     if (ahci_trace_buf.writep == ahci_trace_buf.readp) {
    197       /* full buffer available */
    198       return AHCI_TRACE_BUF_SIZE;
    199     }
    200     return ahci_trace_buf.writep - ahci_trace_buf.readp;
    201   }
    202 
    203   /* read pointer is larger than write pointer; buffer wrapped */
    204   return AHCI_TRACE_BUF_SIZE - ahci_trace_buf.readp + ahci_trace_buf.writep;
    205 }
    206 #endif
    207182
    208183/******************************************************************************
     
    251226  return(STDON);
    252227}
     228
     229/******************************************************************************
     230 * Create adapter/port/device list for user output.
     231 */
     232void build_user_info(void)
     233{
     234  int a;
     235  int p;
     236  int d;
     237
     238  for (a = 0; a < ad_info_cnt; a++) {
     239    AD_INFO *ai = ad_infos + a;
     240
     241    printf_nts("Adapter %d: %d:%d:%d irq=%d addr=0x%lx\n", a,
     242      ai->bus, ai->dev_func>>3, ai->dev_func&7,
     243      ai->irq, ai->mmio_phys);
     244
     245    for (p = 0; p <= ai->port_max; p++) {
     246      P_INFO *pi = &ai->ports[p];
     247
     248      printf_nts("  Port %d:\n", p);
     249
     250      for (d = 0; d <= pi->dev_max; d++) {
     251        if (!pi->devs[d].present) continue;
     252        printf_nts("    Drive %d: atapi=%d, removable=%d\n", d, pi->devs[d].atapi, pi->devs[d].removable);
     253      }
     254    }
     255  }
     256}
     257
Note: See TracChangeset for help on using the changeset viewer.