Print this page
OS-5462 lxbrand kernel should be lint clean
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
OS-3554 lx brand: node.js test test-fs-append-file.js hangs on 64-bit
OS-3209 javac futex problem when dtrace probes enabled - dtrace_systrace_syscall32 only passes 6 args
OS-3217 brandsys syscall takes 7 parameters, not 6
        
*** 21,31 ****
  
  /*
   * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved.
   * Copyright 2012 Milan Jurik. All rights reserved.
   * Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved.
!  * Copyright (c) 2015, Joyent, Inc.
   */
  
  /*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
  /*        All Rights Reserved   */
  
--- 21,31 ----
  
  /*
   * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved.
   * Copyright 2012 Milan Jurik. All rights reserved.
   * Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved.
!  * Copyright 2016 Joyent, Inc.
   */
  
  /*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
  /*        All Rights Reserved   */
  
*** 59,70 ****
   */
  
  int     access(char *, int);
  int     alarm(int);
  int     auditsys(struct auditcalls *, rval_t *);
! int64_t brandsys(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t,
!     uintptr_t);
  int     brk(caddr_t);
  int     chdir(char *);
  int     chmod(char *, int);
  int     chown(char *, uid_t, gid_t);
  int     chroot(char *);
--- 59,69 ----
   */
  
  int     access(char *, int);
  int     alarm(int);
  int     auditsys(struct auditcalls *, rval_t *);
! int64_t brandsys(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
  int     brk(caddr_t);
  int     chdir(char *);
  int     chmod(char *, int);
  int     chown(char *, uid_t, gid_t);
  int     chroot(char *);
*** 644,654 ****
           */
          /* 175 */ IF_LP64(
                          SYSENT_NOSYS(),
                          SYSENT_C("llseek",      llseek32,       4)),
          /* 176 */ SYSENT_LOADABLE(),            /* inst_sync */
!         /* 177 */ SYSENT_CI("brandsys",         brandsys,       6),
          /* 178 */ SYSENT_LOADABLE(),            /* kaio */
          /* 179 */ SYSENT_LOADABLE(),            /* cpc */
          /* 180 */ SYSENT_CI("lgrpsys",          lgrpsys,        3),
          /* 181 */ SYSENT_CI("rusagesys",        rusagesys,      5),
          /* 182 */ SYSENT_LOADABLE(),            /* portfs */
--- 643,653 ----
           */
          /* 175 */ IF_LP64(
                          SYSENT_NOSYS(),
                          SYSENT_C("llseek",      llseek32,       4)),
          /* 176 */ SYSENT_LOADABLE(),            /* inst_sync */
!         /* 177 */ SYSENT_CI("brandsys",         brandsys,       5),
          /* 178 */ SYSENT_LOADABLE(),            /* kaio */
          /* 179 */ SYSENT_LOADABLE(),            /* cpc */
          /* 180 */ SYSENT_CI("lgrpsys",          lgrpsys,        3),
          /* 181 */ SYSENT_CI("rusagesys",        rusagesys,      5),
          /* 182 */ SYSENT_LOADABLE(),            /* portfs */
*** 999,1009 ****
          /* 172 */ SYSENT_CI("lwp_cond_broadcast", lwp_cond_broadcast,   1),
          /* 173 */ SYSENT_CI("pread",            pread32,                4),
          /* 174 */ SYSENT_CI("pwrite",           pwrite32,               4),
          /* 175 */ SYSENT_C("llseek",            llseek32,       4),
          /* 176 */ SYSENT_LOADABLE32(),          /* inst_sync */
!         /* 177 */ SYSENT_CI("brandsys",         brandsys,       6),
          /* 178 */ SYSENT_LOADABLE32(),          /* kaio */
          /* 179 */ SYSENT_LOADABLE32(),          /* cpc */
          /* 180 */ SYSENT_CI("lgrpsys",          lgrpsys,        3),
          /* 181 */ SYSENT_CI("rusagesys",        rusagesys,      5),
          /* 182 */ SYSENT_LOADABLE32(),          /* portfs */
--- 998,1008 ----
          /* 172 */ SYSENT_CI("lwp_cond_broadcast", lwp_cond_broadcast,   1),
          /* 173 */ SYSENT_CI("pread",            pread32,                4),
          /* 174 */ SYSENT_CI("pwrite",           pwrite32,               4),
          /* 175 */ SYSENT_C("llseek",            llseek32,       4),
          /* 176 */ SYSENT_LOADABLE32(),          /* inst_sync */
!         /* 177 */ SYSENT_CI("brandsys",         brandsys,       5),
          /* 178 */ SYSENT_LOADABLE32(),          /* kaio */
          /* 179 */ SYSENT_LOADABLE32(),          /* cpc */
          /* 180 */ SYSENT_CI("lgrpsys",          lgrpsys,        3),
          /* 181 */ SYSENT_CI("rusagesys",        rusagesys,      5),
          /* 182 */ SYSENT_LOADABLE32(),          /* portfs */
*** 1091,1120 ****
   */
  char **syscallnames;
  
  systrace_sysent_t *systrace_sysent;
  void (*systrace_probe)(dtrace_id_t, uintptr_t, uintptr_t,
!     uintptr_t, uintptr_t, uintptr_t, uintptr_t);
  
  /*ARGSUSED*/
  void
  systrace_stub(dtrace_id_t id, uintptr_t arg0, uintptr_t arg1,
!     uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t arg5)
  {}
  
  /*ARGSUSED*/
  int64_t
  dtrace_systrace_syscall(uintptr_t arg0, uintptr_t arg1, uintptr_t arg2,
!     uintptr_t arg3, uintptr_t arg4, uintptr_t arg5)
  {
          systrace_sysent_t *sy = &systrace_sysent[curthread->t_sysnum];
          dtrace_id_t id;
          int64_t rval;
          proc_t *p;
  
          if ((id = sy->stsy_entry) != DTRACE_IDNONE)
!                 (*systrace_probe)(id, arg0, arg1, arg2, arg3, arg4, arg5);
  
          /*
           * We want to explicitly allow DTrace consumers to stop a process
           * before it actually executes the meat of the syscall.
           */
--- 1090,1122 ----
   */
  char **syscallnames;
  
  systrace_sysent_t *systrace_sysent;
  void (*systrace_probe)(dtrace_id_t, uintptr_t, uintptr_t,
!     uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
  
  /*ARGSUSED*/
  void
  systrace_stub(dtrace_id_t id, uintptr_t arg0, uintptr_t arg1,
!     uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t arg5,
!     uintptr_t arg6, uintptr_t arg7)
  {}
  
  /*ARGSUSED*/
  int64_t
  dtrace_systrace_syscall(uintptr_t arg0, uintptr_t arg1, uintptr_t arg2,
!     uintptr_t arg3, uintptr_t arg4, uintptr_t arg5, uintptr_t arg6,
!     uintptr_t arg7)
  {
          systrace_sysent_t *sy = &systrace_sysent[curthread->t_sysnum];
          dtrace_id_t id;
          int64_t rval;
          proc_t *p;
  
          if ((id = sy->stsy_entry) != DTRACE_IDNONE)
!                 (*systrace_probe)(id, arg0, arg1, arg2, arg3, arg4, arg5,
!                     arg6, arg7);
  
          /*
           * We want to explicitly allow DTrace consumers to stop a process
           * before it actually executes the meat of the syscall.
           */
*** 1124,1141 ****
                  curthread->t_dtrace_stop = 0;
                  stop(PR_REQUESTED, 0);
          }
          mutex_exit(&p->p_lock);
  
!         rval = (*sy->stsy_underlying)(arg0, arg1, arg2, arg3, arg4, arg5);
  
          if (ttolwp(curthread)->lwp_errno != 0)
                  rval = -1;
  
          if ((id = sy->stsy_return) != DTRACE_IDNONE)
                  (*systrace_probe)(id, (uintptr_t)rval, (uintptr_t)rval,
!                     (uintptr_t)((int64_t)rval >> 32), 0, 0, 0);
  
          return (rval);
  }
  
  #ifdef _SYSCALL32_IMPL
--- 1126,1144 ----
                  curthread->t_dtrace_stop = 0;
                  stop(PR_REQUESTED, 0);
          }
          mutex_exit(&p->p_lock);
  
!         rval = (*sy->stsy_underlying)(arg0, arg1, arg2, arg3, arg4, arg5,
!             arg6, arg7);
  
          if (ttolwp(curthread)->lwp_errno != 0)
                  rval = -1;
  
          if ((id = sy->stsy_return) != DTRACE_IDNONE)
                  (*systrace_probe)(id, (uintptr_t)rval, (uintptr_t)rval,
!                     (uintptr_t)((int64_t)rval >> 32), 0, 0, 0, 0, 0);
  
          return (rval);
  }
  
  #ifdef _SYSCALL32_IMPL
*** 1143,1161 ****
  systrace_sysent_t *systrace_sysent32;
  
  /*ARGSUSED*/
  int64_t
  dtrace_systrace_syscall32(uintptr_t arg0, uintptr_t arg1, uintptr_t arg2,
!     uintptr_t arg3, uintptr_t arg4, uintptr_t arg5)
  {
          systrace_sysent_t *sy = &systrace_sysent32[curthread->t_sysnum];
          dtrace_id_t id;
          int64_t rval;
          proc_t *p;
  
          if ((id = sy->stsy_entry) != DTRACE_IDNONE)
!                 (*systrace_probe)(id, arg0, arg1, arg2, arg3, arg4, arg5);
  
          /*
           * We want to explicitly allow DTrace consumers to stop a process
           * before it actually executes the meat of the syscall.
           */
--- 1146,1166 ----
  systrace_sysent_t *systrace_sysent32;
  
  /*ARGSUSED*/
  int64_t
  dtrace_systrace_syscall32(uintptr_t arg0, uintptr_t arg1, uintptr_t arg2,
!     uintptr_t arg3, uintptr_t arg4, uintptr_t arg5, uintptr_t arg6,
!     uintptr_t arg7)
  {
          systrace_sysent_t *sy = &systrace_sysent32[curthread->t_sysnum];
          dtrace_id_t id;
          int64_t rval;
          proc_t *p;
  
          if ((id = sy->stsy_entry) != DTRACE_IDNONE)
!                 (*systrace_probe)(id, arg0, arg1, arg2, arg3, arg4, arg5, arg6,
!                     arg7);
  
          /*
           * We want to explicitly allow DTrace consumers to stop a process
           * before it actually executes the meat of the syscall.
           */
*** 1165,1182 ****
                  curthread->t_dtrace_stop = 0;
                  stop(PR_REQUESTED, 0);
          }
          mutex_exit(&p->p_lock);
  
!         rval = (*sy->stsy_underlying)(arg0, arg1, arg2, arg3, arg4, arg5);
  
          if (ttolwp(curthread)->lwp_errno != 0)
                  rval = -1;
  
          if ((id = sy->stsy_return) != DTRACE_IDNONE)
                  (*systrace_probe)(id, (uintptr_t)rval, (uintptr_t)rval,
!                     (uintptr_t)((uint64_t)rval >> 32), 0, 0, 0);
  
          return (rval);
  }
  
  #endif
--- 1170,1188 ----
                  curthread->t_dtrace_stop = 0;
                  stop(PR_REQUESTED, 0);
          }
          mutex_exit(&p->p_lock);
  
!         rval = (*sy->stsy_underlying)(arg0, arg1, arg2, arg3, arg4, arg5, arg6,
!             arg7);
  
          if (ttolwp(curthread)->lwp_errno != 0)
                  rval = -1;
  
          if ((id = sy->stsy_return) != DTRACE_IDNONE)
                  (*systrace_probe)(id, (uintptr_t)rval, (uintptr_t)rval,
!                     (uintptr_t)((uint64_t)rval >> 32), 0, 0, 0, 0, 0);
  
          return (rval);
  }
  
  #endif
*** 1200,1206 ****
                  sy = &systrace_sysent32[curthread->t_sysnum];
  #endif
          }
  
          if ((id = sy->stsy_return) != DTRACE_IDNONE)
!                 (*systrace_probe)(id, 0, 0, 0, 0, 0, 0);
  }
--- 1206,1212 ----
                  sy = &systrace_sysent32[curthread->t_sysnum];
  #endif
          }
  
          if ((id = sy->stsy_return) != DTRACE_IDNONE)
!                 (*systrace_probe)(id, 0, 0, 0, 0, 0, 0, 0, 0);
  }