home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / os / vxworks / 1197 < prev    next >
Encoding:
Internet Message Format  |  1993-01-12  |  2.1 KB

  1. Path: sparky!uunet!usc!howland.reston.ans.net!spool.mu.edu!olivea!gossip.pyramid.com!pyramid!iphasew!pogo!hwajin
  2. From: hwajin@pogo.iphasew.com (Hwa-Jin Bae)
  3. Newsgroups: comp.os.vxworks
  4. Subject: Re: vxWorks Sockets and Pipes
  5. Message-ID: <HWAJIN.93Jan12152753@pogo.iphasew.com>
  6. Date: 12 Jan 93 23:27:53 GMT
  7. References: <1993Jan12.201921.4490@nmsu.edu>
  8. Sender: hwajin@iphasew.com (Hwa-Jin Bae)
  9. Organization: Interphase West, Santa Clara, CA
  10. Lines: 34
  11. In-Reply-To: dog@xdev.sunspot.noao.edu's message of 12 Jan 93 20:19:21 GMT
  12.  
  13. >>>>> On 12 Jan 93 20:19:21 GMT, dog@xdev.sunspot.noao.edu (Fritz Stauffer) said:
  14.  
  15. Fritz> 1) writing to a vxWorks pipe returns an ERROR if the pipe is full.
  16. Fritz> Is there a way to block I/O when the pipe is full, or do I need to use
  17. Fritz> message queues?  
  18.  
  19. pipe in 5.0 uses message queues, and write() should block if called from
  20. non-interrupt level code.  in earlier versions, pipe used ring buffers
  21. and write() polled until ring space became available if called from
  22. non-interrupt level code. if you prefer, you can just use ring buffers
  23. (ringLib) yourself, and have finer control over what gets done.
  24.  
  25. Fritz> 2) writing large files on the vxWorks target to the socket to output 
  26. Fritz> on the unix host uses all of the memory up and crashes.  This is 
  27. Fritz> because the socket write buffers data in memory.  This is okay for 
  28. Fritz> small tar files, but fails on large tar files.  Is there a way to 
  29. Fritz> wait for the socket buffers to flush, or to get a socket status as 
  30. Fritz> to how much buffer is left, or any other feedback?
  31.  
  32. socket level buffers are adjustable with setsockopt() -- SO_SNDBUF,
  33. SO_RCVBUF.  by default TCP uses 4K on each side and UDP uses 2K on
  34. send side and 4K in recv side.  you can retrieve the current limit by
  35. using getsockopt().  when these high water marks are reached socket
  36. code blocks until more space become available. inetstatShow() displays
  37. output similar to UNIX command 'netstat -a', from which you should be
  38. able to tell various socket level queue length at the time.
  39.  
  40. hwajin
  41. --
  42. hjb@netcom.com (home)
  43. hwajin@iphasew.com (work)
  44. -- 
  45. hjb@netcom.com (home)
  46. hwajin@iphasew.com (work)
  47.