/*
 *  Copyright (C) 2015 Cluster Inc.
 *  Produced at ClusterHQ Inc (cf, DISCLAIMER).
 *  Written by Richard Yao <richard.yao@clusterhq.com>.
 *
 *  This file is part of the SPL, Solaris Porting Layer.
 *
 *  The SPL is free software; you can redistribute it and/or modify it
 *  under the terms of the GNU General Public License as published by the
 *  Free Software Foundation; either version 2 of the License, or (at your
 *  option) any later version.
 *
 *  The SPL is distributed in the hope that it will be useful, but WITHOUT
 *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 *  for more details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with the SPL.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef _SPL_USER_H
#define	_SPL_USER_H

/*
 * We have uf_info_t for areleasef(). We implement areleasef() using a global
 * linked list of all open file descriptors with the task structs referenced,
 * so accessing the correct descriptor from areleasef() only requires knowing
 * about the Linux task_struct. Since this is internal to our compatibility
 * layer, we make it an opaque type.
 *
 * XXX: If the descriptor changes under us and we do not do a getf() between
 * the change and using it, we would get an incorrect reference.
 */

struct uf_info;
typedef struct uf_info uf_info_t;

#define	P_FINFO(x) ((uf_info_t *)x)

#endif /* SPL_USER_H */
