Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Jun 2005 11:41:29 +0800 (CST)
From:      shiner chen <shiner_chen@yahoo.com.cn>
To:        freebsd-hackers@freebsd.org
Subject:   a error about the kern_sendit
Message-ID:  <20050603034129.34801.qmail@web15510.mail.cnb.yahoo.com>

next in thread | raw e-mail | index | archive | help
i wrote a function to send the  data of my  a data structure in my kld  by socket in kernel, the function as follow:
the arg 1 is file descriptor of socket. the arg 2 is the address of data structure. the arg 3 is the length of data structure and it is 20 bytes .
 
the error return by kern_sendit is EFAULT(14), i check the address of data structure ,but it is right!
why ?  who can tell me. thanks!!
 
int loadinfo_send(int so_fd, struct thread *td,
  char *snd_buf, unsigned int uBufLen)
{
 int  st = 0;
 
 /* read */
    struct iovec aiov;
    struct msghdr msg;
   
 msg.msg_name = 0;
 msg.msg_namelen = 0;
 msg.msg_iov = &aiov;
 msg.msg_iovlen = 1;
 msg.msg_control = 0;
 msg.msg_flags = 0;
    
 /* do actual send operation now */
 aiov.iov_base = snd_buf ;
 aiov.iov_len  = uBufLen;
///////// there is error////////////////////////
 /*st = kern_sendit(td, so_fd,&msg,0,0);*/

 st = keta_kern_sendit(td, control_so,&msg,0,0); 
 if( st!=0 ){
  if ( st == EAGAIN ){
   loadinfo_msleep(1);
  }
  else{
   log(LOG_DEBUG,"in loadinfo_send, send error(%d)!\n",st);    
   return st;
  }
 }
 log(LOG_DEBUG,"send successfully !\n");
 return st;
}
 

		
---------------------------------
DO YOU YAHOO!?
  雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050603034129.34801.qmail>