cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Copyright 1995-1998 by Metro Link, Inc.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Permission to use, copy, modify, distribute, and sell this software and its
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * documentation for any purpose is hereby granted without fee, provided that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * the above copyright notice appear in all copies and that both that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * copyright notice and this permission notice appear in supporting
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * documentation, and that the name of Metro Link, Inc. not be used in
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * advertising or publicity pertaining to distribution of the software without
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * specific, written prior permission. Metro Link, Inc. makes no
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * representations about the suitability of this software for any purpose.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * It is provided "as is" without express or implied warranty.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * METRO LINK, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * EVENT SHALL METRO LINK, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * PERFORMANCE OF THIS SOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Copyright (c) 1997-2002 by The XFree86 Project, Inc.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Permission is hereby granted, free of charge, to any person obtaining a
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * copy of this software and associated documentation files (the "Software"),
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * to deal in the Software without restriction, including without limitation
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * the rights to use, copy, modify, merge, publish, distribute, sublicense,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * and/or sell copies of the Software, and to permit persons to whom the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Software is furnished to do so, subject to the following conditions:
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * The above copyright notice and this permission notice shall be included in
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * all copies or substantial portions of the Software.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * OTHER DEALINGS IN THE SOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * Except as contained in this notice, the name of the copyright holder(s)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * and author(s) shall not be used in advertising or otherwise to promote
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * the sale, use or other dealings in this Software without prior written
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * authorization from the copyright holder(s) and author(s).
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifdef HAVE_XORG_CONFIG_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include <xorg-config.h>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef _LOADERPROCS_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define _LOADERPROCS_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "xf86Module.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct module_desc {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync struct module_desc *child;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync struct module_desc *sib;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync struct module_desc *parent;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync char *name;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int handle;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ModuleSetupProc SetupProc;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ModuleTearDownProc TearDownProc;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync void *TearDownData; /* returned from SetupProc */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync const XF86ModuleVersionInfo *VersionInfo;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} ModuleDesc, *ModuleDescPtr;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* External API for the loader */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid LoaderInit(void);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncModuleDescPtr LoadDriver(const char *, const char *, int, pointer, int *,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int *);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncModuleDescPtr LoadModule(const char *, const char *, const char **,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync const char **, pointer, const XF86ModReqInfo *,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int *, int *);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncModuleDescPtr DuplicateModule(ModuleDescPtr mod, ModuleDescPtr parent);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid UnloadDriver(ModuleDescPtr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid LoaderSetPath(const char *path);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid LoaderSortExtensions(void);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncint LoaderUnload(int);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncunsigned long LoaderGetModuleVersion(ModuleDescPtr mod);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid LoaderResetOptions(void);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid LoaderSetOptions(unsigned long);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* Options for LoaderSetOptions */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define LDR_OPT_ABI_MISMATCH_NONFATAL 0x0001
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* _LOADERPROCS_H */