hi all:
        The codes is:
#######################################
static int ring_mmap(struct file *file,
6366                      struct socket *sock, struct vm_area_struct *vma)
6367 {
6368   struct sock *sk = sock->sk;
6369   struct pf_ring_socket *pfr = ring_sk(sk);
6370   int i, rc;
6371 unsigned long mem_id = vma->vm_pgoff; /* using vm_pgoff as memory id */
6372   unsigned long size = (unsigned long)(vma->vm_end - vma->vm_start);
6373
6374   if(unlikely(enable_debug))
6375     printk("[PF_RING] %s() called\n", __FUNCTION__);
6376
6377   if(size % PAGE_SIZE) {
6378     if(unlikely(enable_debug))
6379 printk("[PF_RING] %s() failed: len is not multiple of PAGE_SIZE\n", __FUNCTION__);
6380
6381     return(-EINVAL);
6382   }
6383
6384   if(unlikely(enable_debug))
6385     printk("[PF_RING] %s() called, size: %ld bytes [bucket_len=%d]\n",
6386            __FUNCTION__, size, pfr->bucket_len);
6387
6388   /* Trick for mapping DNA chunks */
6389   if(mem_id >= 100) {
6390     mem_id -= 100;
6391
6392     if(pfr->dna_device) {
#######################################
From kernel/pf_ring.c

I don't understand the value of "mem_id" just are {0, 1, 2, 3, 4, 5, 6}。for examples:
#######################################
6465   switch(mem_id) {
6466     /* RING */
6467     case 0:
6468       if(pfr->dna_device != NULL || pfr->dna_cluster != NULL) {
6469 printk("[PF_RING] %s(): trying to map ring memory on DNA socket\n", __FUNCTION__);
6470         return(-EINVAL);
6471       }
6472
6473       if(pfr->ring_memory == NULL) {
6474         if(ring_alloc_mem(sk) != 0) {
6475 printk("[PF_RING] %s(): unable to allocate memory\n", __FUNCTION__);
6476           return(-EINVAL);
6477         }
6478       }
6479
6480 /* If userspace tries to mmap beyond end of our buffer, then fail */
6481       if(size > pfr->slots_info->tot_mem) {
6482         if(unlikely(enable_debug))
6483 printk("[PF_RING] %s() failed: area too large [%ld > %llu]\n", __FUNCTION__, size, pfr->slots_info->tot_mem);
6484         return(-EINVAL);
6485       }
6486
6487       if(unlikely(enable_debug))
6488 printk("[PF_RING] mmap [slot_len=%d][tot_slots=%d] for ring on device %s\n", 6489 pfr->slots_info->slot_len, pfr->slots_info->min_num_slots, pfr->ring_netdev->dev->name);
6490
6491 if((rc = do_memory_mmap(vma, 0, size, pfr->ring_memory, 0, VM_LOCKED, 0)) < 0)
6492         return(rc);
6493
6494       break;
6495     case 1:
6496       /* DNA: RX packet descriptors */
#######################################


How would confirm the value of these{0,1,2,3,4,5,6}?  Thank you.




_______________________________________________
Ntop-misc mailing list
[email protected]
http://listgateway.unipi.it/mailman/listinfo/ntop-misc

Reply via email to