errno ought to be a positive integer, not -1; write returns -1 and sets errno to a positive int which describes the error; it should be one of:

       EAGAIN Non-blocking I/O has been selected using O_NONBLOCK and the write would block.

       EBADF  fd is not a valid file descriptor or is not open for writing.

       EFAULT buf is outside your accessible address space.

       EFBIG  An attempt was made to write a file that exceeds the implementation-defined maximum file size or the process' file size limit, or to write at a position past the maximum allowed offset.

       EINTR  The call was interrupted by a signal before any data was written.

       EINVAL fd  is  attached  to  an object which is unsuitable for writing; or the file was opened with the O_DIRECT flag, and either the address specified in buf, the value specified in count, or the current
              file offset is not suitably aligned.

       EIO    A low-level I/O error occurred while modifying the inode.

       ENOSPC The device containing the file referred to by fd has no room for the data.

       EPIPE  fd is connected to a pipe or socket whose reading end is closed.  When this happens the writing process will also receive a SIGPIPE signal.  (Thus, the write return value is seen only if  the  pro-
              gram catches, blocks or ignores this signal.)

       Other errors may occur, depending on the object connected to fd.


C

On Jan 4, 2007, at 5:46 PM, Mayur Shah wrote:

We get back a -1

On 1/3/07, Craig Hughes <craig@gumstix.com> wrote:
On Jan 2, 2007, at 12:39 PM, Mayur Shah wrote:

I have a C program that tries to write to the serial port on the gumstix device. I get a return value of -1 when I try to write to the serial port using this command,

write(sportfd, &char_reg, sizeof(char_reg)  

Not sure why I am not able to write even a single byte of data.

RETURN VALUES
     Upon successful completion the number of bytes which were written is
     returned.  Otherwise a -1 is returned and the global variable errno is
     set to indicate the error.

So.... what is errno set to after write() returns -1?