本文整理汇总了C++中SOLD函数的典型用法代码示例。如果您正苦于以下问题:C++ SOLD函数的具体用法?C++ SOLD怎么用?C++ SOLD使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了SOLD函数的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: solaris_putmsg
asmlinkage int solaris_putmsg(unsigned int fd, u32 arg1, u32 arg2, u32 arg3)
{
struct file *filp;
struct inode *ino;
struct strbuf __user *ctlptr;
struct strbuf __user *datptr;
struct strbuf ctl, dat;
int flags = (int) arg3;
int error = -EBADF;
struct fdtable *fdt;
SOLD("entry");
lock_kernel();
if (fd >= sysctl_nr_open)
goto out;
fdt = files_fdtable(current->files);
filp = fdt->fd[fd];
if(!filp) goto out;
ino = filp->f_dentry->d_inode;
if (!ino) goto out;
if (!S_ISSOCK(ino->i_mode) &&
(imajor(ino) != 30 || iminor(ino) != 1))
goto out;
ctlptr = A(arg1);
datptr = A(arg2);
error = -EFAULT;
if (ctlptr) {
if (copy_from_user(&ctl,ctlptr,sizeof(ctl)))
goto out;
if (ctl.len < 0 && flags) {
error = -EINVAL;
goto out;
}
} else {
ctl.len = 0;
ctl.buf = 0;
}
if (datptr) {
if (copy_from_user(&dat,datptr,sizeof(dat)))
goto out;
} else {
dat.len = 0;
dat.buf = 0;
}
error = timod_putmsg(fd,A(ctl.buf),ctl.len,
A(dat.buf),dat.len,flags);
out:
unlock_kernel();
SOLD("done");
return error;
}
示例2: solaris_putmsg
asmlinkage int solaris_putmsg(unsigned int fd, u32 arg1, u32 arg2, u32 arg3)
{
struct file *filp;
struct inode *ino;
struct strbuf *ctlptr, *datptr;
struct strbuf ctl, dat;
int flags = (int) arg3;
int error = -EBADF;
SOLD("entry");
lock_kernel();
if(fd >= NR_OPEN) goto out;
read_lock(¤t->files->file_lock);
filp = fcheck(fd);
read_unlock(¤t->files->file_lock);
if(!filp) goto out;
ino = filp->f_dentry->d_inode;
if (!ino) goto out;
if (!ino->i_sock &&
(MAJOR(ino->i_rdev) != 30 || MINOR(ino->i_rdev) != 1))
goto out;
ctlptr = (struct strbuf *)A(arg1);
datptr = (struct strbuf *)A(arg2);
error = -EFAULT;
if (ctlptr) {
if (copy_from_user(&ctl,ctlptr,sizeof(ctl)))
goto out;
if (ctl.len < 0 && flags) {
error = -EINVAL;
goto out;
}
} else {
ctl.len = 0;
ctl.buf = 0;
}
if (datptr) {
if (copy_from_user(&dat,datptr,sizeof(dat)))
goto out;
} else {
dat.len = 0;
dat.buf = 0;
}
error = timod_putmsg(fd,(char*)A(ctl.buf),ctl.len,
(char*)A(dat.buf),dat.len,flags);
out:
unlock_kernel();
SOLD("done");
return error;
}
示例3: timod_wake_socket
static void timod_wake_socket(unsigned int fd)
{
struct socket *sock;
struct fdtable *fdt;
SOLD("wakeing socket");
fdt = files_fdtable(current->files);
sock = SOCKET_I(fdt->fd[fd]->f_path.dentry->d_inode);
wake_up_interruptible(&sock->wait);
read_lock(&sock->sk->sk_callback_lock);
if (sock->fasync_list && !test_bit(SOCK_ASYNC_WAITDATA, &sock->flags))
__kill_fasync(sock->fasync_list, SIGIO, POLL_IN);
read_unlock(&sock->sk->sk_callback_lock);
SOLD("done");
}
示例4: solaris_timod
static inline int solaris_timod(unsigned int fd, unsigned int cmd, u32 arg,
int len, int *len_p)
{
int ret;
switch (cmd & 0xff) {
case 141: /* TI_OPTMGMT */
{
int i;
u32 prim;
SOLD("TI_OPMGMT entry");
ret = timod_putmsg(fd, (char *)A(arg), len, NULL, -1, 0);
SOLD("timod_putmsg() returned");
if (ret)
return (-ret << 8) | TSYSERR;
i = MSG_HIPRI;
SOLD("calling timod_getmsg()");
ret = timod_getmsg(fd, (char *)A(arg), len, len_p, NULL, -1, NULL, &i);
SOLD("timod_getmsg() returned");
if (ret)
return (-ret << 8) | TSYSERR;
SOLD("ret ok");
if (get_user(prim, (u32 *)A(arg)))
return (EFAULT << 8) | TSYSERR;
SOLD("got prim");
if (prim == T_ERROR_ACK) {
u32 tmp, tmp2;
SOLD("prim is T_ERROR_ACK");
if (get_user(tmp, (u32 *)A(arg)+3) ||
get_user(tmp2, (u32 *)A(arg)+2))
return (EFAULT << 8) | TSYSERR;
return (tmp2 << 8) | tmp;
}
SOLD("TI_OPMGMT return 0");
return 0;
}
case 142: /* TI_BIND */
{
int i;
u32 prim;
SOLD("TI_BIND entry");
ret = timod_putmsg(fd, (char *)A(arg), len, NULL, -1, 0);
SOLD("timod_putmsg() returned");
if (ret)
return (-ret << 8) | TSYSERR;
len = 1024; /* Solaris allows arbitrary return size */
i = MSG_HIPRI;
SOLD("calling timod_getmsg()");
ret = timod_getmsg(fd, (char *)A(arg), len, len_p, NULL, -1, NULL, &i);
SOLD("timod_getmsg() returned");
if (ret)
return (-ret << 8) | TSYSERR;
SOLD("ret ok");
if (get_user(prim, (u32 *)A(arg)))
return (EFAULT << 8) | TSYSERR;
SOLD("got prim");
if (prim == T_ERROR_ACK) {
u32 tmp, tmp2;
SOLD("prim is T_ERROR_ACK");
if (get_user(tmp, (u32 *)A(arg)+3) ||
get_user(tmp2, (u32 *)A(arg)+2))
return (EFAULT << 8) | TSYSERR;
return (tmp2 << 8) | tmp;
}
SOLD("no ERROR_ACK requested");
if (prim != T_OK_ACK)
return TBADSEQ;
SOLD("OK_ACK requested");
i = MSG_HIPRI;
SOLD("calling timod_getmsg()");
ret = timod_getmsg(fd, (char *)A(arg), len, len_p, NULL, -1, NULL, &i);
SOLD("timod_getmsg() returned");
if (ret)
return (-ret << 8) | TSYSERR;
SOLD("TI_BIND return ok");
return 0;
}
case 140: /* TI_GETINFO */
case 143: /* TI_UNBIND */
case 144: /* TI_GETMYNAME */
case 145: /* TI_GETPEERNAME */
case 146: /* TI_SETMYNAME */
case 147: /* TI_SETPEERNAME */
;
}
return TNOTSUPPORT;
}
示例5: mri_valpad_2D
MRI_IMAGE * mri_valpad_2D( int nxbot , int nxtop ,
int nybot , int nytop , MRI_IMAGE *fim,
byte val)
{
int nxold,nyold , nxnew,nynew , nx,ny ;
int ii,jj , iibot,iitop , jjbot,jjtop ;
MRI_IMAGE *vim ;
ENTRY("mri_valpad_2D") ;
/*- check for user stupidity -*/
if( fim == NULL ) RETURN(NULL) ;
nx = fim->nx ; ny = fim->ny ;
/*- special case: just copy input -*/
if( nxbot == 0 && nybot == 0 &&
nxtop == 0 && nytop == 0 ){
vim = mri_copy( fim ) ;
RETURN(vim) ;
}
nxold = nx ; nxnew = nxold + nxbot + nxtop ; /* dimensions */
nyold = ny ; nynew = nyold + nybot + nytop ;
iibot = MAX(0,-nxbot) ; iitop = MIN(nxold,nxold+nxtop) ; /* range of data */
jjbot = MAX(0,-nybot) ; jjtop = MIN(nyold,nyold+nytop) ; /* in old dataset */
if( nxnew < 1 || iibot >= iitop || /* check for reasonable sizes */
nynew < 1 || jjbot >= jjtop ){ /* and ranges of dataset */
fprintf(stderr,"*** mri_zeropad: can't cut image down to nothing!\n") ;
RETURN(NULL) ;
}
vim = mri_new( nxnew , nynew , fim->kind ) ;
MRI_COPY_AUX(vim,fim) ;
memset( mri_data_pointer(vim) , val ,
nxnew*nynew*mri_datum_size(vim->kind) ) ;
/* macros for computing 1D subscripts from 2D indices */
#undef SNEW /* in case was defined in some stupid .h file */
#undef SOLD
#define SNEW(i,j) ((i+nxbot)+(j+nybot)*nxnew)
#define SOLD(i,j) (i+j*nxold)
switch( fim->kind ){ /* copy rows of old into new */
default:
fprintf(stderr,"*** mri_zeropad: unknown input datum=%d\n",fim->kind) ;
mri_free(vim) ;
RETURN(NULL) ;
case MRI_byte:{
byte *bnew = MRI_BYTE_PTR(vim), *bold = MRI_BYTE_PTR(fim) ;
for( jj=jjbot ; jj < jjtop ; jj++ )
for( ii=iibot ; ii < iitop ; ii++ )
bnew[SNEW(ii,jj)] = bold[SOLD(ii,jj)] ;
}
break ;
case MRI_rgb:{
byte *bnew = MRI_RGB_PTR(vim), *bold = MRI_RGB_PTR(fim) ;
for( jj=jjbot ; jj < jjtop ; jj++ )
for( ii=iibot ; ii < iitop ; ii++ ){
bnew[3*SNEW(ii,jj) ] = bold[3*SOLD(ii,jj) ] ;
bnew[3*SNEW(ii,jj)+1] = bold[3*SOLD(ii,jj)+1] ;
bnew[3*SNEW(ii,jj)+2] = bold[3*SOLD(ii,jj)+2] ;
}
}
break ;
case MRI_short:{
short *bnew = MRI_SHORT_PTR(vim), *bold = MRI_SHORT_PTR(fim) ;
for( jj=jjbot ; jj < jjtop ; jj++ )
for( ii=iibot ; ii < iitop ; ii++ )
bnew[SNEW(ii,jj)] = bold[SOLD(ii,jj)] ;
}
break ;
case MRI_int:{
int *bnew = MRI_INT_PTR(vim), *bold = MRI_INT_PTR(fim) ;
for( jj=jjbot ; jj < jjtop ; jj++ )
for( ii=iibot ; ii < iitop ; ii++ )
bnew[SNEW(ii,jj)] = bold[SOLD(ii,jj)] ;
}
break ;
case MRI_float:{
float *bnew = MRI_FLOAT_PTR(vim), *bold = MRI_FLOAT_PTR(fim) ;
for( jj=jjbot ; jj < jjtop ; jj++ )
for( ii=iibot ; ii < iitop ; ii++ )
bnew[SNEW(ii,jj)] = bold[SOLD(ii,jj)] ;
}
break ;
//.........这里部分代码省略.........