CTC++ Coverage Report - Execution Profile    #726/1532

Files Summary | Functions Summary | Execution Profile | Index | No Index
First | Previous | Next | Last


File: drivers/usb/mon/mon_dma.c
Instrumentation mode: function-decision-multicondition
TER: 0 % ( 0/ 2)

Start/ End/    
True False - Line Source

  1 /*
  2  * The USB Monitor, inspired by Dave Harding's USBMon.
  3  *
  4  * mon_dma.c: Library which snoops on DMA areas.
  5  *
  6  * Copyright (C) 2005 Pete Zaitcev (zaitcev@redhat.com)
  7  */
  8 #include <linux/kernel.h>
  9 #include <linux/list.h>
  10 #include <linux/highmem.h>
  11 #include <asm/page.h>
  12 
  13 #include <linux/usb.h>   /* Only needed for declarations in usb_mon.h */
  14 #include "usb_mon.h"
  15 
  16 #ifdef __i386__      /* CONFIG_ARCH_I386 does not exit */
  17 #define MON_HAS_UNMAP 1
  18 
  19 #define phys_to_page(phys)   pfn_to_page((phys) >> PAGE_SHIFT)
  20 
  21 char mon_dmapeek(unsigned char *dst, dma_addr_t dma_addr, int len)
  22 {
  23    struct page *pg;
  24    unsigned long flags;
  25    unsigned char *map;
  26    unsigned char *ptr;
  27 
  28    /*
  29     * On i386, a DMA handle is the "physical" address of a page.
  30     * In other words, the bus address is equal to physical address.
  31     * There is no IOMMU.
  32     */
  33    pg = phys_to_page(dma_addr);
  34 
  35    /*
  36     * We are called from hardware IRQs in case of callbacks.
  37     * But we can be called from softirq or process context in case
  38     * of submissions. In such case, we need to protect KM_IRQ0.
  39     */
  40    local_irq_save(flags);
  41    map = kmap_atomic(pg, KM_IRQ0);
  42    ptr = map + (dma_addr & (PAGE_SIZE-1));
  43    memcpy(dst, ptr, len);
  44    kunmap_atomic(map, KM_IRQ0);
  45    local_irq_restore(flags);
  46    return 0;
  47 }
  48 #endif /* __i386__ */
  49 
  50 #ifndef MON_HAS_UNMAP
 
- 51 char mon_dmapeek(unsigned char *dst, dma_addr_t dma_addr, int len)
  52 {
 - 53    return 'D';
  54 }
  55 #endif
***TER 0% (0/2) of SOURCE FILE mon_dma.c

Files Summary | Functions Summary | Execution Profile | Index | No Index
First | Previous | Next | Last | Top