m_out is shared between threads as the reply message, and it can happen results get overwritten by another thread before the reply is sent. This change . makes m_out local to the message handling function, declared on the stack of the caller . forces callers of reply() to give it a message, or declare the reply message has no significant fields except for the return code by calling replycode() Change-Id: Id06300083a63c72c00f34f86a5c7d96e4bbdf9f6
21 lines
682 B
C
21 lines
682 B
C
/* This file is the counterpart of "read.c". It contains the code for writing
|
|
* insofar as this is not contained in read_write().
|
|
*
|
|
* The entry points into this file are
|
|
* do_write: call read_write to perform the WRITE system call
|
|
*/
|
|
|
|
#include "fs.h"
|
|
#include "file.h"
|
|
#include "param.h"
|
|
|
|
|
|
/*===========================================================================*
|
|
* do_write *
|
|
*===========================================================================*/
|
|
int do_write(message *UNUSED(m_out))
|
|
{
|
|
/* Perform the write(fd, buffer, nbytes) system call. */
|
|
return(do_read_write_peek(WRITING, job_m_in.fd,
|
|
job_m_in.buffer, (size_t) job_m_in.nbytes));
|
|
}
|