90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello/*
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello * This file and its contents are supplied under the terms of the
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello * Common Development and Distribution License ("CDDL"), version 1.0.
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello * You may only use this file in accordance with the terms of version
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello * 1.0 of the CDDL.
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello *
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello * A full copy of the text of the CDDL should have accompanied this
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello * source. A copy of the CDDL is also available via the Internet at
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello * http://www.illumos.org/license/CDDL.
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello */
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello/*
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello * Copyright 2016 Joyent, Inc.
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello */
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello#ifndef FLOCK_TEST_UTIL_H
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello#define FLOCK_TEST_UTIL_H
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello#include <fcntl.h>
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello#include <sys/types.h>
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello#define BAD_ARGS_MESSAGE "Expected to receive 3 arguments, but found %d."
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello#define BAD_MODE_MESSAGE "Lock mode must be one of " \
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello "\"shared\" or \"exclusive\""
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello#define BAD_LOCK_MESSAGE "Lock style must be one of " \
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello "\"posix\", \"ofd\", or \"exclusive\""
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mellotypedef enum lock_style {
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello LSTYLE_POSIX,
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello LSTYLE_OFD,
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello LSTYLE_FLOCK,
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello LSTYLE_LAST
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello} lock_style_t;
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Melloextern boolean_t LOG;
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Melloextern boolean_t flock_nodata(int);
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Melloextern void flock_block(int);
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Melloextern void flock_alert(int);
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Melloextern void flock_log(const char *, ...);
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Melloextern void flock_reinit(struct flock *, int);
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Melloextern char *flock_cmdname(int);
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Melloextern char *flock_stylename(lock_style_t);
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Melloextern char *flock_stylestr(lock_style_t);
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Melloextern lock_style_t flock_styleenum(char *);
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello
90221f9148b67fdc90178b67f9600b7bd4e3bc7cCody Peter Mello#endif /* FLOCK_TEST_UTIL_H */