X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=afs.c;h=f76da3dc17a398e2b273ec3a12b5b166520b6d56;hp=013fdfe995bad6efd6b961ebf23c79f193044255;hb=d5a9e8c8eefe170b6fb62be563c079c818bd3bf8;hpb=e31d5dc4774caa3a90d8be566bfd94b9e5cf1482 diff --git a/afs.c b/afs.c index 013fdfe9..f76da3dc 100644 --- a/afs.c +++ b/afs.c @@ -26,6 +26,7 @@ #include "signal.h" #include "fd.h" #include "mood.h" +#include "sideband.h" #include "command.h" /** The osl tables used by afs. \sa blob.c. */ @@ -579,7 +580,7 @@ static void com_select_callback(int fd, const struct osl_object *query) current_mop : "dummy mood", num_admissible); out: if (ret2 >= 0 && pb.offset) - pass_buffer_as_shm(pb.buf, pb.offset, &fd); + pass_buffer_as_shm(fd, pb.buf, pb.offset); free(pb.buf); } @@ -785,20 +786,23 @@ static void command_pre_select(struct sched *s, struct task *t) /** * Send data as shared memory to a file descriptor. * + * \param fd File descriptor to send the shmid to. * \param buf The buffer holding the data to be sent. * \param size The size of \a buf. - * \param fd_ptr A pointer to the file descriptor. * * This function creates a shared memory area large enough to hold * the content given by \a buf and \a size and sends the identifier * of this area to the file descriptor given by \a fd_ptr. * + * It is called by the AFS max_size handler as well as directly by the AFS + * command callbacks to send command output to the command handlers. + * * \return Zero if \a buf is \p NULL or \a size is zero. Negative on errors, * and positive on success. */ -int pass_buffer_as_shm(char *buf, size_t size, void *fd_ptr) +int pass_buffer_as_shm(int fd, char *buf, size_t size) { - int ret, shmid, fd = *(int *)fd_ptr; + int ret, shmid; void *shm; struct callback_result *cr; @@ -1021,7 +1025,7 @@ out: if (ret < 0) para_printf(&pb, "%s\n", para_strerror(-ret)); if (pb.buf) - pass_buffer_as_shm(pb.buf, pb.offset, &fd); + pass_buffer_as_shm(fd, pb.buf, pb.offset); free(pb.buf); }