325N/A/*
325N/A * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
1276N/A *
325N/A * Permission is hereby granted, free of charge, to any person obtaining a
1276N/A * copy of this software and associated documentation files (the "Software"),
325N/A * to deal in the Software without restriction, including without limitation
325N/A * the rights to use, copy, modify, merge, publish, distribute, sublicense,
919N/A * and/or sell copies of the Software, and to permit persons to whom the
919N/A * Software is furnished to do so, subject to the following conditions:
919N/A *
919N/A * The above copyright notice and this permission notice (including the next
919N/A * paragraph) shall be included in all copies or substantial portions of the
919N/A * Software.
919N/A *
919N/A * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
919N/A * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
919N/A * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
919N/A * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
919N/A * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
919N/A * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
919N/A * DEALINGS IN THE SOFTWARE.
919N/A */
919N/A
919N/A#ifndef _LIBXFBVTS_H
325N/A#define _LIBXFBVTS_H
325N/A
325N/A/**************************************************/
325N/A/* library header file for an Example Framebuffer */
493N/A/*
325N/A * When implementing new graphics framebuffers, you
325N/A * must use the below interfaces.
1276N/A * If you change them, then you need to update the
325N/A * mapfile and the graphics_svts.c dlopen to use the
911N/A * new 'version'. See Solaris docs on the Linker for
1276N/A * more info on doing this: docs.eng.sun.com
1276N/A */
1276N/A
911N/A
325N/A/* standard test masks */
761N/A#define GRAPHICS_TEST_OPEN 0x00000001
325N/A#define GRAPHICS_TEST_DMA 0x00000002
325N/A#define GRAPHICS_TEST_MEM 0x00000004
325N/A#define GRAPHICS_TEST_CHIP 0x00000008
325N/A#define GRAPHICS_TEST_MASK 0x0000000f
325N/A
325N/A#define CONNECTIVITY_TEST -1
493N/A
493N/A/* Return Packet */
947N/A/* this is a standard return type for all test functions */
325N/Atypedef struct return_packet_t {
325N/A int error_count; /* number of errors encountered before test abort */
325N/A int message_count; /* total number of messages */
493N/A int number_of_message_codes; /* the array length */
325N/A int *message_codes; /* the message codes */
761N/A char **message_strings; /* the string to stick into the mesg */
761N/A} return_packet;
325N/A
920N/A
920N/Atypedef return_packet *(*gfxtest_function)(int); /* function ptr declaration */
325N/A/*: gfxtest_function(int filedescription) returning ptr to return_packet */
325N/A
325N/A/* Test Info */
325N/A/* This structure has these members:
970N/A - count : the number of tests defined
970N/A - this_test_mask : the test mask for test[0..count-1]
970N/A - this_test_mesg : the test verbose message for test[0..count-1]
325N/A - this_test_function : the actual test for test[0..count-1]
An example:
count = 1;
this_test_mask = 0x1;
this_test_mesg = VTS_DEFINED_VERBOSE_MESG_SUBTEST_VIDEO;
this_test_function = subtest_video;
*/
typedef struct gfxtest_info_t {
int count;
int *this_test_mask;
int *this_test_mesg;
gfxtest_function *this_test_function;
gfxtest_function connection_test_function;
} gfxtest_info;
typedef int (*gfxtest_func_ptr)(gfxtest_info *);
/* You Must Implement these functions */
/* Get Tests:
copies the array of masks, messages, and function ptrs into the
gfxtest_info structure. The library does the malloc, so call cleanup
before exit.
Return: 0 for success, errno for failure.
*/
extern int get_tests(gfxtest_info *tests);
/* Cleanup Tests:
free any memory allocated
call to avoid memory leaks
*/
extern int cleanup_tests(gfxtest_info *tests);
#endif /* _LIBXFBVTS_H */