コード例 #1
0
ファイル: dskimodule.c プロジェクト: dillonhicks/ipymake
static void check_buffer(struct reader_thread_data *self)
{
	size_t subbufs_consumed;

	lseek(self->produced_file, 0, SEEK_SET);
	if (read(self->produced_file, &self->produced,
		 sizeof(self->produced)) < 0) {
		eprintf("Couldn't read from produced file for cpu %d, "
				"exiting: errcode = %d: %s\n", self->cpu,
				errno, strerror(errno));
		exit(1);
	}

	subbufs_consumed = process_subbufs(self);
	if (subbufs_consumed) {
		if (subbufs_consumed == self->n_subbufs)
			eprintf("cpu %d buffer full. "
					"Consider using a larger buffer size.\n",
					self->cpu);
		if (subbufs_consumed > self->max_backlog) {
			self->max_backlog = subbufs_consumed;
		}
		self->consumed += subbufs_consumed;

		if (write(self->consumed_file, &subbufs_consumed,
			  sizeof(subbufs_consumed)) < 0) {
			eprintf("Couldn't write to consumed file for cpu %d, "
					"exiting: errcode = %d: %s\n",
					self->cpu, errno, strerror(errno));
			exit(1);
		}
	}
}
コード例 #2
0
ファイル: klog.c プロジェクト: titanxxh/xengt-ha-kernel
/**
 *	check_buffer - check for and read any available sub-buffers in a buffer
 */
static void check_buffer(unsigned cpu)
{
	size_t subbufs_consumed;

	lseek(produced_file[cpu], 0, SEEK_SET);
	if (read(produced_file[cpu], &status[cpu].produced,
		 sizeof(status[cpu].produced)) < 0) {
		printf("Couldn't read from consumed file for cpu %d, exiting: errcode = %d: %s\n", cpu, errno, strerror(errno));
		exit(1);
	}

	subbufs_consumed = process_subbufs(cpu);
	if (subbufs_consumed) {
		if (subbufs_consumed == n_subbufs)
			fprintf(stderr, "cpu %d buffer full.  Consider using a larger buffer size.\n", cpu);
		if (subbufs_consumed > status[cpu].max_backlog)
			status[cpu].max_backlog = subbufs_consumed;
		status[cpu].consumed += subbufs_consumed;
		if (write(consumed_file[cpu], &subbufs_consumed,
			  sizeof(subbufs_consumed)) < 0) {
			printf("Couldn't write to consumed file for cpu %d, exiting: errcode = %d: %s\n", cpu, errno, strerror(errno));
			exit(1);
		}
	}
}