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