GRASS 8 Programmer's Manual 8.6.0dev(2026)-ddeab64dbf
Loading...
Searching...
No Matches
pageout.c
Go to the documentation of this file.
1/**
2 * \file pageout.c
3 *
4 * \brief Segment page-out routines.
5 *
6 * This program is free software under the GNU General Public License
7 * (>=v2). Read the file COPYING that comes with GRASS for details.
8 *
9 * \author GRASS Development Team
10 *
11 * \date 2005-2009
12 */
13
14#include <stdio.h>
15#include <unistd.h>
16#include <string.h>
17#include <errno.h>
18
19#include <grass/gis.h>
20#include <grass/glocale.h>
21
22#include "local_proto.h"
23
24/**
25 * \brief Internal use only
26 *
27 * Pages segment to disk.
28 *
29 * Finds segment value <b>i</b> in segment <b>seg</b> and pages it out
30 * to disk.
31 *
32 * \param[in] SEG segment
33 * \param[in] i segment value
34 * \return 1 if successful
35 * \return -1 on error
36 */
38{
39 if (SEG->seek(SEG, SEG->scb[i].n, 0) == -1) {
40 int err = errno;
41 G_warning(_("File read/write operation failed: %s (%d)"), strerror(err),
42 err);
43 return -1;
44 }
45 errno = 0;
46 if (write(SEG->fd, SEG->scb[i].buf, SEG->size) != SEG->size) {
47 int err = errno;
48
49 if (err)
50 G_warning("Segment pageout: %s", strerror(err));
51 else
52 G_warning("Segment pageout: insufficient disk space?");
53 return -1;
54 }
55 SEG->scb[i].dirty = 0;
56
57 return 1;
58}
AMI_err seek(off_t offset)
Definition ami_stream.h:445
void G_warning(const char *,...) __attribute__((format(printf
#define _(str)
Definition glocale.h:10
int seg_pageout(SEGMENT *SEG, int i)
Internal use only.
Definition pageout.c:37
SYMBOL * err(FILE *fp, SYMBOL *s, char *msg)
#define write
Definition unistd.h:6