Peter & Andreas, Thank you very much for your help.
I understood that the kernel error numbers are limited. The largest error number for i386 (kernel 2.6) is 131 so far. Assume that the virtual address returned from do_mmap_pgoff will never exceed (unsigned long)(-1000L), which is in the address range one page below the maximum virtual address, then IS_ERR_VALUE() should work. Dongliang Chen Staff Engineer EMS Technologies, Inc - Defense & Space Systems 660 Engineering Dr Norcross, GA 30092 Tel: 770-263-9200 x 4379 -----Original Message----- From: H. Peter Anvin [mailto:[EMAIL PROTECTED] Sent: Tuesday, March 06, 2007 7:39 PM To: Chen, Dongliang Cc: linux-kernel@vger.kernel.org Subject: Re: return negative number for unsigned long function in kernel H. Peter Anvin wrote: >If you want to test for errorness, you could use the macro >IS_ERR_VALUE(). Unfortunately the macro isn't all that safe, in that it >will give you the wrong answer if it's ever used on something that >*isn't* an unsigned long. -----Original Message----- From: Andreas Schwab [mailto:[EMAIL PROTECTED] Sent: Tuesday, March 06, 2007 2:06 PM To: Chen, Dongliang Cc: linux-kernel@vger.kernel.org Subject: Re: return negative number for unsigned long function in kernel Andreas Schwab wrote: >The return value is directly passed to user space (it's the guts of the >mmap syscall). The glibc wrapper transforms it appropriately so that errno >is set and -1 is returned if there is an error. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/