2 Private data structures for the Console Splitter driver
4 Copyright (c) 2006 - 2007 Intel Corporation. <BR>
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 #ifndef _CON_SPLITTER_H_
16 #define _CON_SPLITTER_H_
19 // Include common header file for this module.
21 #include "CommonHeader.h"
24 // Private Data Structures
26 #define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT 32
27 #define CONSOLE_SPLITTER_MODES_ALLOC_UNIT 32
28 #define MAX_STD_IN_PASSWORD 80
33 } TEXT_OUT_SPLITTER_QUERY_DATA
;
36 // Private data for the EFI_SIMPLE_TEXT_INPUT_PROTOCOL splitter
38 #define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'p')
42 EFI_HANDLE VirtualHandle
;
44 EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn
;
45 UINTN CurrentNumberOfConsoles
;
46 EFI_SIMPLE_TEXT_INPUT_PROTOCOL
**TextInList
;
47 UINTN TextInListCount
;
49 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer
;
50 EFI_SIMPLE_POINTER_MODE SimplePointerMode
;
51 UINTN CurrentNumberOfPointers
;
52 EFI_SIMPLE_POINTER_PROTOCOL
**PointerList
;
53 UINTN PointerListCount
;
55 BOOLEAN PasswordEnabled
;
56 CHAR16 Password
[MAX_STD_IN_PASSWORD
];
58 CHAR16 PwdAttempt
[MAX_STD_IN_PASSWORD
];
61 BOOLEAN KeyEventSignalState
;
62 BOOLEAN InputEventSignalState
;
63 } TEXT_IN_SPLITTER_PRIVATE_DATA
;
65 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
67 TEXT_IN_SPLITTER_PRIVATE_DATA, \
69 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
72 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \
74 TEXT_IN_SPLITTER_PRIVATE_DATA, \
76 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
80 // Private data for the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL splitter
82 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'o', 'S', 'p')
85 EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
;
86 EFI_UGA_DRAW_PROTOCOL
*UgaDraw
;
87 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*TextOut
;
88 BOOLEAN TextOutEnabled
;
89 } TEXT_OUT_AND_GOP_DATA
;
92 UINT32 HorizontalResolution
;
93 UINT32 VerticalResolution
;
98 EFI_HANDLE VirtualHandle
;
99 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL TextOut
;
100 EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode
;
102 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput
;
103 EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*GraphicsOutputBlt
;
104 TEXT_OUT_GOP_MODE
*GraphicsOutputModeBuffer
;
105 UINTN CurrentNumberOfGraphicsOutput
;
106 BOOLEAN HardwareNeedsStarting
;
108 EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl
;
110 UINTN CurrentNumberOfConsoles
;
111 TEXT_OUT_AND_GOP_DATA
*TextOutList
;
112 UINTN TextOutListCount
;
113 TEXT_OUT_SPLITTER_QUERY_DATA
*TextOutQueryData
;
114 UINTN TextOutQueryDataCount
;
115 INT32
*TextOutModeMap
;
117 EFI_CONSOLE_CONTROL_SCREEN_MODE ConsoleOutputMode
;
119 UINTN DevNullColumns
;
121 CHAR16
*DevNullScreen
;
122 INT32
*DevNullAttributes
;
124 } TEXT_OUT_SPLITTER_PRIVATE_DATA
;
126 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
128 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
130 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
133 #define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
135 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
137 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
140 #define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
142 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
144 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
147 #define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
149 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
151 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
155 // Function Prototypes
159 ConSplitterDriverEntry (
160 IN EFI_HANDLE ImageHandle
,
161 IN EFI_SYSTEM_TABLE
*SystemTable
166 ConSplitterTextInConstructor (
167 TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
172 ConSplitterTextOutConstructor (
173 TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
178 // Driver Binding Functions
182 ConSplitterConInDriverBindingSupported (
183 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
184 IN EFI_HANDLE ControllerHandle
,
185 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
191 ConSplitterSimplePointerDriverBindingSupported (
192 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
193 IN EFI_HANDLE ControllerHandle
,
194 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
200 ConSplitterConOutDriverBindingSupported (
201 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
202 IN EFI_HANDLE ControllerHandle
,
203 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
209 ConSplitterStdErrDriverBindingSupported (
210 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
211 IN EFI_HANDLE ControllerHandle
,
212 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
218 ConSplitterConInDriverBindingStart (
219 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
220 IN EFI_HANDLE ControllerHandle
,
221 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
227 ConSplitterSimplePointerDriverBindingStart (
228 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
229 IN EFI_HANDLE ControllerHandle
,
230 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
236 ConSplitterConOutDriverBindingStart (
237 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
238 IN EFI_HANDLE ControllerHandle
,
239 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
245 ConSplitterStdErrDriverBindingStart (
246 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
247 IN EFI_HANDLE ControllerHandle
,
248 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
254 ConSplitterConInDriverBindingStop (
255 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
256 IN EFI_HANDLE ControllerHandle
,
257 IN UINTN NumberOfChildren
,
258 IN EFI_HANDLE
*ChildHandleBuffer
264 ConSplitterSimplePointerDriverBindingStop (
265 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
266 IN EFI_HANDLE ControllerHandle
,
267 IN UINTN NumberOfChildren
,
268 IN EFI_HANDLE
*ChildHandleBuffer
274 ConSplitterConOutDriverBindingStop (
275 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
276 IN EFI_HANDLE ControllerHandle
,
277 IN UINTN NumberOfChildren
,
278 IN EFI_HANDLE
*ChildHandleBuffer
284 ConSplitterStdErrDriverBindingStop (
285 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
286 IN EFI_HANDLE ControllerHandle
,
287 IN UINTN NumberOfChildren
,
288 IN EFI_HANDLE
*ChildHandleBuffer
294 ConSplitterComponentNameGetDriverName (
295 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
297 OUT CHAR16
**DriverName
302 ConSplitterConInComponentNameGetControllerName (
303 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
304 IN EFI_HANDLE ControllerHandle
,
305 IN EFI_HANDLE ChildHandle OPTIONAL
,
307 OUT CHAR16
**ControllerName
312 ConSplitterSimplePointerComponentNameGetControllerName (
313 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
314 IN EFI_HANDLE ControllerHandle
,
315 IN EFI_HANDLE ChildHandle OPTIONAL
,
317 OUT CHAR16
**ControllerName
322 ConSplitterConOutComponentNameGetControllerName (
323 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
324 IN EFI_HANDLE ControllerHandle
,
325 IN EFI_HANDLE ChildHandle OPTIONAL
,
327 OUT CHAR16
**ControllerName
332 ConSplitterStdErrComponentNameGetControllerName (
333 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
334 IN EFI_HANDLE ControllerHandle
,
335 IN EFI_HANDLE ChildHandle OPTIONAL
,
337 OUT CHAR16
**ControllerName
341 // TextIn Constructor/Destructor functions
344 ConSplitterTextInAddDevice (
345 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
346 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*TextIn
351 ConSplitterTextInDeleteDevice (
352 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
353 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*TextIn
358 // SimplePointer Constuctor/Destructor functions
361 ConSplitterSimplePointerAddDevice (
362 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
363 IN EFI_SIMPLE_POINTER_PROTOCOL
*SimplePointer
368 ConSplitterSimplePointerDeleteDevice (
369 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
370 IN EFI_SIMPLE_POINTER_PROTOCOL
*SimplePointer
375 // TextOut Constuctor/Destructor functions
378 ConSplitterTextOutAddDevice (
379 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
380 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*TextOut
,
381 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
,
382 IN EFI_UGA_DRAW_PROTOCOL
*UgaDraw
387 ConSplitterTextOutDeleteDevice (
388 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
389 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*TextOut
394 // TextIn I/O Functions
398 ConSplitterTextInReset (
399 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*This
,
400 IN BOOLEAN ExtendedVerification
406 ConSplitterTextInReadKeyStroke (
407 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL
*This
,
408 OUT EFI_INPUT_KEY
*Key
414 ConSplitterTextInWaitForKey (
421 ConSpliterConssoleControlStdInLocked (
428 ConSpliterConsoleControlLockStdInEvent (
436 ConSpliterConsoleControlLockStdIn (
437 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
444 ConSplitterTextInPrivateReadKeyStroke (
445 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
446 OUT EFI_INPUT_KEY
*Key
452 ConSplitterSimplePointerReset (
453 IN EFI_SIMPLE_POINTER_PROTOCOL
*This
,
454 IN BOOLEAN ExtendedVerification
460 ConSplitterSimplePointerGetState (
461 IN EFI_SIMPLE_POINTER_PROTOCOL
*This
,
462 IN OUT EFI_SIMPLE_POINTER_STATE
*State
468 ConSplitterSimplePointerWaitForInput (
475 // TextOut I/O Functions
478 ConSplitterSynchronizeModeData (
479 TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
485 ConSplitterTextOutReset (
486 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
487 IN BOOLEAN ExtendedVerification
493 ConSplitterTextOutOutputString (
494 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
501 ConSplitterTextOutTestString (
502 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
509 ConSplitterTextOutQueryMode (
510 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
519 ConSplitterTextOutSetMode (
520 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
527 ConSplitterTextOutSetAttribute (
528 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
535 ConSplitterTextOutClearScreen (
536 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
542 ConSplitterTextOutSetCursorPosition (
543 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
551 ConSplitterTextOutEnableCursor (
552 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
*This
,
558 ConSplitterGrowBuffer (
559 IN UINTN SizeOfCount
,
567 ConSpliterConsoleControlGetMode (
568 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
569 OUT EFI_CONSOLE_CONTROL_SCREEN_MODE
*Mode
,
570 OUT BOOLEAN
*GopExists
,
571 OUT BOOLEAN
*StdInLocked
577 ConSpliterConsoleControlSetMode (
578 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
579 IN EFI_CONSOLE_CONTROL_SCREEN_MODE Mode
585 ConSpliterGraphicsOutputQueryMode (
586 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*This
,
587 IN UINT32 ModeNumber
,
588 OUT UINTN
*SizeOfInfo
,
589 OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION
**Info
595 ConSpliterGraphicsOutputSetMode (
596 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
* This
,
603 ConSpliterGraphicsOutputBlt (
604 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*This
,
605 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*BltBuffer
, OPTIONAL
606 IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation
,
609 IN UINTN DestinationX
,
610 IN UINTN DestinationY
,
613 IN UINTN Delta OPTIONAL
619 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
620 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
,
621 IN EFI_UGA_DRAW_PROTOCOL
*UgaDraw
627 DevNullTextOutOutputString (
628 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
634 DevNullTextOutSetMode (
635 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
641 DevNullTextOutClearScreen (
642 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
647 DevNullTextOutSetCursorPosition (
648 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
655 DevNullTextOutEnableCursor (
656 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
662 DevNullSyncGopStdOut (
663 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private