Changeset 154 for trunk/src/os2ahci/trace.c
- Timestamp:
- Apr 10, 2013, 6:47:05 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/os2ahci/trace.c
r153 r154 28 28 29 29 /* -------------------------- macros and constants ------------------------- */ 30 31 #define AHCI_TRACE_BUF_SIZE 0x8000U /* 32k */32 30 33 31 /* ------------------------ typedefs and structures ------------------------ */ … … 53 51 * a GDT selector for the trace ring buffer 54 52 */ 55 void trace_init( void)53 void trace_init(u16 usBufSize) 56 54 { 57 55 SEL sel = 0; 56 57 if (ahci_trace_buf.phys_addr) return; 58 58 59 59 /* initialize ring buffer logic */ 60 60 ahci_trace_buf.writep = 0; 61 61 ahci_trace_buf.readp = 0; 62 ahci_trace_buf.mask = AHCI_TRACE_BUF_SIZE- 1;62 ahci_trace_buf.mask = usBufSize - 1; 63 63 64 64 if (ahci_trace_buf.phys_addr == 0) { 65 65 /* allocate buffer */ 66 if (DevHelp_AllocPhys((ULONG) AHCI_TRACE_BUF_SIZE, MEMTYPE_ABOVE_1M,66 if (DevHelp_AllocPhys((ULONG) usBufSize, MEMTYPE_ABOVE_1M, 67 67 &(ahci_trace_buf.phys_addr))) { 68 68 /* 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, 70 70 &(ahci_trace_buf.phys_addr))) { 71 71 /* failed, too. Give up */ 72 72 ahci_trace_buf.phys_addr = 0; 73 73 cprintf("%s warning: failed to allocate %dk trace buffer\n", 74 drv_name, AHCI_TRACE_BUF_SIZE/ 1024);74 drv_name, usBufSize / 1024); 75 75 return; 76 76 } … … 80 80 if (DevHelp_AllocGDTSelector(&sel, 1) || 81 81 DevHelp_PhysToGDTSelector(ahci_trace_buf.phys_addr, 82 AHCI_TRACE_BUF_SIZE, sel)) {82 usBufSize, sel)) { 83 83 /* failed; free GDT selector and physical memory we allocated before */ 84 84 if (sel) { … … 95 95 96 96 } 97 98 99 97 } 100 98 … … 182 180 return cb_read; 183 181 } 184 185 #ifdef NOT_USED186 /******************************************************************************187 * return number of bytes we can read from the trace buffer188 */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 #endif207 182 208 183 /****************************************************************************** … … 251 226 return(STDON); 252 227 } 228 229 /****************************************************************************** 230 * Create adapter/port/device list for user output. 231 */ 232 void 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.