PERFORCE change 122592 for review

Alfred Perlstein alfred at freebsd.org
Mon Jul 9 19:39:27 UTC 2007


Peter, why not have libc obtain this at startup and cache it?

Otherwise these syscalls will incur an additional sysctl per
call, right?

-Alfred

* Peter Wemm <peter at FreeBSD.org> [070630 15:26] wrote:
> http://perforce.freebsd.org/chv.cgi?CH=122592
> 
> Change 122592 by peter at peter_overcee on 2007/06/30 22:25:38
> 
> 	Use getosreldate() to test for __new_* syscalls.
> 
> Affected files ...
> 
> .. //depot/projects/hammer/lib/libc/sys/ftruncate.c#3 edit
> .. //depot/projects/hammer/lib/libc/sys/lseek.c#3 edit
> .. //depot/projects/hammer/lib/libc/sys/mmap.c#4 edit
> .. //depot/projects/hammer/lib/libc/sys/pread.c#3 edit
> .. //depot/projects/hammer/lib/libc/sys/pwrite.c#3 edit
> .. //depot/projects/hammer/lib/libc/sys/truncate.c#3 edit
> 
> Differences ...
> 
> ==== //depot/projects/hammer/lib/libc/sys/ftruncate.c#3 (text+ko) ====
> 
> @@ -36,6 +36,7 @@
>  #include <sys/types.h>
>  #include <sys/syscall.h>
>  #include <unistd.h>
> +#include <osreldate.h>
>  
>  /*
>   * This function provides 64-bit offset padding that
> @@ -47,5 +48,8 @@
>  	off_t	length;
>  {
>  
> -	return(__syscall((quad_t)SYS_ftruncate, fd, 0, length));
> +	if (getosreldate() >= 700049)
> +		return(__new_ftruncate(fd, length));
> +	else
> +		return(__syscall((quad_t)SYS_ftruncate, fd, 0, length));
>  }
> 
> ==== //depot/projects/hammer/lib/libc/sys/lseek.c#3 (text+ko) ====
> 
> @@ -36,6 +36,7 @@
>  #include <sys/types.h>
>  #include <sys/syscall.h>
>  #include <unistd.h>
> +#include <osreldate.h>
>  
>  /*
>   * This function provides 64-bit offset padding that
> @@ -47,5 +48,9 @@
>  	off_t	offset;
>  	int	whence;
>  {
> -	return(__syscall((quad_t)SYS_lseek, fd, 0, offset, whence));
> +
> +	if (getosreldate() >= 700049)
> +		return(__new_lseek(fd, offset, whence));
> +	else
> +		return(__syscall((quad_t)SYS_lseek, fd, 0, offset, whence));
>  }
> 
> ==== //depot/projects/hammer/lib/libc/sys/mmap.c#4 (text+ko) ====
> 
> @@ -37,6 +37,7 @@
>  #include <sys/mman.h>
>  #include <sys/syscall.h>
>  #include <unistd.h>
> +#include <osreldate.h>
>  
>  /*
>   * This function provides 64-bit offset padding that
> @@ -52,6 +53,10 @@
>  	off_t	offset;
>  {
>  
> -	return ((void *)(intptr_t)__syscall((quad_t)SYS_mmap, addr, len, prot,
> -	    flags, fd, 0, offset));
> +	if (getosreldate() >= 700049)
> +		return (__new_mmap(addr, len, prot, flags, fd, offset));
> +	else
> +
> +		return ((void *)(intptr_t)__syscall((quad_t)SYS_mmap, addr, len, prot,
> +		    flags, fd, 0, offset));
>  }
> 
> ==== //depot/projects/hammer/lib/libc/sys/pread.c#3 (text+ko) ====
> 
> @@ -36,6 +36,7 @@
>  #include <sys/types.h>
>  #include <sys/syscall.h>
>  #include <unistd.h>
> +#include <osreldate.h>
>  
>  /*
>   * This function provides 64-bit offset padding that
> @@ -48,5 +49,9 @@
>  	size_t	nbyte;
>  	off_t	offset;
>  {
> -	return ((ssize_t)__syscall((quad_t)SYS_pread, fd, buf, nbyte, 0, offset));
> +
> +	if (getosreldate() >= 700049)
> +		return (__new_pread(fd, buf, nbyte, offset));
> +	else
> +		return ((ssize_t)__syscall((quad_t)SYS_pread, fd, buf, nbyte, 0, offset));
>  }
> 
> ==== //depot/projects/hammer/lib/libc/sys/pwrite.c#3 (text+ko) ====
> 
> @@ -36,6 +36,7 @@
>  #include <sys/types.h>
>  #include <sys/syscall.h>
>  #include <unistd.h>
> +#include <osreldate.h>
>  
>  /*
>   * This function provides 64-bit offset padding that
> @@ -48,5 +49,8 @@
>  	size_t	nbyte;
>  	off_t	offset;
>  {
> -	return ((ssize_t)__syscall((quad_t)SYS_pwrite, fd, buf, nbyte, 0, offset));
> +	if (getosreldate() >= 700049)
> +		return (__new_pwrite(fd, buf, nbyte, offset));
> +	else
> +		return ((ssize_t)__syscall((quad_t)SYS_pwrite, fd, buf, nbyte, 0, offset));
>  }
> 
> ==== //depot/projects/hammer/lib/libc/sys/truncate.c#3 (text+ko) ====
> 
> @@ -35,8 +35,8 @@
>  
>  #include <sys/types.h>
>  #include <sys/syscall.h>
> -
>  #include <unistd.h>
> +#include <osreldate.h>
>  
>  /*
>   * This function provides 64-bit offset padding that
> @@ -48,5 +48,8 @@
>  	off_t	length;
>  {
>  
> -	return(__syscall((quad_t)SYS_truncate, path, 0, length));
> +	if (getosreldate() >= 700049)
> +		return(__new_truncate(path, length));
> +	else
> +		return(__syscall((quad_t)SYS_truncate, path, 0, length));
>  }

-- 
- Alfred Perlstein


More information about the p4-projects mailing list