Unresolved symbols: sys_munmap

mvDELTA, mvGAMMA-G, mvSIGMA-SLC, mvSIGMA-SLG, mvSIGMA-SQ, mvTITAN-C16, mvTITAN-C8, mvTITAN-CL, mvTITAN-DIG, mvTITAN-G1, mvTITAN-RGB/G4, pcIMAGE-SC, pcIMAGE-SDIG, pcIMAGE-SG/SGVS, pcIMAGE-SRGB

The missing function "sys_munmap" is in the file:
.......driver/os/linux/kmod/matrix_mem.c

If you edit this file you will see the following lines close to the start:

===== snip =====

#define MODULE_NAME "mv-mem"

/* from mm/mmap.c */
#if LINUX_VERSION_CODE >= KERNEL_VERSION (2,4,7)
extern asmlinkage long sys_munmap(unsigned long addr, size_t len);
#else
/* not exported from Kernel! */
asmlinkage long sys_munmap(unsigned long addr, size_t len)
{
int ret;
#if LINUX_VERSION_CODE >= KERNEL_VERSION (2,3,0)
struct mm_struct *mm = current->mm;

down_write(&mm->mmap_sem);
ret = do_munmap(mm, addr, len);
up_write(&mm->mmap_sem);
#else
ret = do_munmap(addr, len);
#endif
return ret;
}
#endif

===== snip =====

Now you should delete the conditional "#if LINUX_VERSION_CODE >= KERNEL_VERSION (2,4,7)"
and the next 2 lines and, of course, the matching "#endif" as well.

Afterwards it should look like this.....

===== snip =====

#define MODULE_NAME "mv-mem"

/* from mm/mmap.c */
/* not exported from Kernel! */
asmlinkage long sys_munmap(unsigned long addr, size_t len)
{
int ret;
#if LINUX_VERSION_CODE >= KERNEL_VERSION (2,3,0)
struct mm_struct *mm = current->mm;

down_write(&mm->mmap_sem);
ret = do_munmap(mm, addr, len);
up_write(&mm->mmap_sem);
#else
ret = do_munmap(addr, len);
#endif
return ret;
}

===== snip =====

Now you can compile and load the titan / matrixfg module without errors.

Back