Gilles Chanteperdrix wrote:
> Hi Jan,
> 
> I have just commited a modification of the nucleus heap which allows
> faulting newly mapped pages. However, I noticed that we should modify
> rtdm_mmap_to_user as in the attached patch.

No general concerns, please just provide an empty xnarch_fault_range as
default to avoid the #ifdefs. Is this an ARM-only issue?

> 
> At this chance, I also noticed that there is no way to ask for uncached
> memory to rtdm_mmap_to_user, how do you think we should change
> rtdm_mmap_to_user to allow this?

Look like we would have to introduce a 'flags' argument to
rtdm_mmap_to_user. That's 2.5 material, where we'll change a few RTDM
APIs anyway.

Jan

> 
> Regards.
> 
> Index: ksrc/skins/rtdm/drvlib.c
> ===================================================================
> --- ksrc/skins/rtdm/drvlib.c  (revision 4390)
> +++ ksrc/skins/rtdm/drvlib.c  (working copy)
> @@ -1781,6 +1781,7 @@ static int rtdm_mmap_buffer(struct file
>  {
>       struct rtdm_mmap_data *mmap_data = filp->private_data;
>       unsigned long vaddr, paddr, maddr, size;
> +     int ret;
> 
>       vma->vm_ops = mmap_data->vm_ops;
>       vma->vm_private_data = mmap_data->vm_private_data;
> @@ -1810,15 +1811,25 @@ static int rtdm_mmap_buffer(struct file
>                       vaddr += PAGE_SIZE;
>                       mapped_size += PAGE_SIZE;
>               }
> -             return 0;
> +#ifdef xnarch_fault_range
> +             xnarch_fault_range(vma);
> +#endif /* xnarch_fault_range */
> +             ret = 0;
>       } else
>  #endif /* CONFIG_MMU */
>       if (mmap_data->src_paddr)
> -             return xnarch_remap_io_page_range(filp, vma, maddr, paddr,
> -                                               size, PAGE_SHARED);
> -     else
> -             return xnarch_remap_kmem_page_range(vma, maddr, paddr,
> -                                                 size, PAGE_SHARED);
> +             ret = xnarch_remap_io_page_range(filp, vma, maddr, paddr,
> +                                              size, PAGE_SHARED);
> +     else {
> +             ret = xnarch_remap_kmem_page_range(vma, maddr, paddr,
> +                                                size, PAGE_SHARED);
> +#ifdef xnarch_fault_range
> +             if (!ret)
> +                     xnarch_fault_range(vma);
> +#endif /* xnarch_fault_range */
> +     }
> +
> +     return ret;
>  }
> 
>  static struct file_operations rtdm_mmap_fops = {
> 
> 


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to