svn commit: r263214 - in head/sys: compat/freebsd32 kern sys

Adrian Chadd adrian at freebsd.org
Sun Mar 16 01:17:54 UTC 2014


How far along does it get?


-a


On 15 March 2014 17:53, John-Mark Gurney <jmg at freebsd.org> wrote:
> Author: jmg
> Date: Sun Mar 16 00:53:40 2014
> New Revision: 263214
> URL: http://svnweb.freebsd.org/changeset/base/263214
>
> Log:
>   change td_retval into a union w/ off_t, with defines to mask the
>   change...  This eliminates a cast, and also forces td_retval
>   (often 2 32-bit registers) to be aligned so that off_t's can be
>   stored there on arches with strict alignment requirements like
>   armeb (AVILA)...  On i386, this doesn't change alignment, and on
>   amd64 it doesn't either, as register_t is already 64bits...
>
>   This will also prevent future breakage due to people adding additional
>   fields to the struct...
>
>   This gets AVILA booting a bit farther...
>
>   Reviewed by:  bde
>
> Modified:
>   head/sys/compat/freebsd32/freebsd32_misc.c
>   head/sys/kern/uipc_shm.c
>   head/sys/kern/vfs_vnops.c
>   head/sys/sys/proc.h
>
> Modified: head/sys/compat/freebsd32/freebsd32_misc.c
> ==============================================================================
> --- head/sys/compat/freebsd32/freebsd32_misc.c  Sun Mar 16 00:22:07 2014        (r263213)
> +++ head/sys/compat/freebsd32/freebsd32_misc.c  Sun Mar 16 00:53:40 2014        (r263214)
> @@ -1504,7 +1504,7 @@ freebsd32_lseek(struct thread *td, struc
>         ap.whence = uap->whence;
>         error = sys_lseek(td, &ap);
>         /* Expand the quad return into two parts for eax and edx */
> -       pos = *(off_t *)(td->td_retval);
> +       pos = td->td_uretoff.tdu_off;
>         td->td_retval[RETVAL_LO] = pos & 0xffffffff;    /* %eax */
>         td->td_retval[RETVAL_HI] = pos >> 32;           /* %edx */
>         return error;
>
> Modified: head/sys/kern/uipc_shm.c
> ==============================================================================
> --- head/sys/kern/uipc_shm.c    Sun Mar 16 00:22:07 2014        (r263213)
> +++ head/sys/kern/uipc_shm.c    Sun Mar 16 00:53:40 2014        (r263214)
> @@ -270,7 +270,7 @@ shm_seek(struct file *fp, off_t offset,
>                 if (offset < 0 || offset > shmfd->shm_size)
>                         error = EINVAL;
>                 else
> -                       *(off_t *)(td->td_retval) = offset;
> +                       td->td_uretoff.tdu_off = offset;
>         }
>         foffset_unlock(fp, offset, error != 0 ? FOF_NOUPDATE : 0);
>         return (error);
>
> Modified: head/sys/kern/vfs_vnops.c
> ==============================================================================
> --- head/sys/kern/vfs_vnops.c   Sun Mar 16 00:22:07 2014        (r263213)
> +++ head/sys/kern/vfs_vnops.c   Sun Mar 16 00:53:40 2014        (r263214)
> @@ -2080,7 +2080,7 @@ vn_seek(struct file *fp, off_t offset, i
>         if (error != 0)
>                 goto drop;
>         VFS_KNOTE_UNLOCKED(vp, 0);
> -       *(off_t *)(td->td_retval) = offset;
> +       td->td_uretoff.tdu_off = offset;
>  drop:
>         foffset_unlock(fp, offset, error != 0 ? FOF_NOUPDATE : 0);
>         return (error);
>
> Modified: head/sys/sys/proc.h
> ==============================================================================
> --- head/sys/sys/proc.h Sun Mar 16 00:22:07 2014        (r263213)
> +++ head/sys/sys/proc.h Sun Mar 16 00:53:40 2014        (r263214)
> @@ -300,7 +300,11 @@ struct thread {
>                 TDS_RUNQ,
>                 TDS_RUNNING
>         } td_state;                     /* (t) thread state */
> -       register_t      td_retval[2];   /* (k) Syscall aux returns. */
> +       union {
> +               register_t      tdu_retval[2];
> +               off_t           tdu_off;
> +       } td_uretoff;                   /* (k) Syscall aux returns. */
> +#define td_retval      td_uretoff.tdu_retval
>         struct callout  td_slpcallout;  /* (h) Callout for sleep. */
>         struct trapframe *td_frame;     /* (k) */
>         struct vm_object *td_kstack_obj;/* (a) Kstack object. */
>


More information about the svn-src-head mailing list