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 // Private Data Structures
21 #define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT 32
22 #define CONSOLE_SPLITTER_MODES_ALLOC_UNIT 32
23 #define MAX_STD_IN_PASSWORD 80
28 } TEXT_OUT_SPLITTER_QUERY_DATA
;
31 // Private data for the EFI_SIMPLE_TEXT_INPUT_PROTOCOL splitter
33 #define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'p')
37 EFI_HANDLE VirtualHandle
;
39 EFI_SIMPLE_TEXT_IN_PROTOCOL TextIn
;
40 UINTN CurrentNumberOfConsoles
;
41 EFI_SIMPLE_TEXT_IN_PROTOCOL
**TextInList
;
42 UINTN TextInListCount
;
44 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer
;
45 EFI_SIMPLE_POINTER_MODE SimplePointerMode
;
46 UINTN CurrentNumberOfPointers
;
47 EFI_SIMPLE_POINTER_PROTOCOL
**PointerList
;
48 UINTN PointerListCount
;
50 BOOLEAN PasswordEnabled
;
51 CHAR16 Password
[MAX_STD_IN_PASSWORD
];
53 CHAR16 PwdAttempt
[MAX_STD_IN_PASSWORD
];
56 BOOLEAN KeyEventSignalState
;
57 BOOLEAN InputEventSignalState
;
58 } TEXT_IN_SPLITTER_PRIVATE_DATA
;
60 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
62 TEXT_IN_SPLITTER_PRIVATE_DATA, \
64 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
67 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \
69 TEXT_IN_SPLITTER_PRIVATE_DATA, \
71 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
75 // Private data for the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL splitter
77 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'o', 'S', 'p')
80 EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
;
81 EFI_UGA_DRAW_PROTOCOL
*UgaDraw
;
82 EFI_SIMPLE_TEXT_OUT_PROTOCOL
*TextOut
;
83 BOOLEAN TextOutEnabled
;
84 } TEXT_OUT_AND_GOP_DATA
;
87 UINT32 HorizontalResolution
;
88 UINT32 VerticalResolution
;
93 EFI_HANDLE VirtualHandle
;
94 EFI_SIMPLE_TEXT_OUT_PROTOCOL TextOut
;
95 EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode
;
97 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput
;
98 EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*GraphicsOutputBlt
;
99 TEXT_OUT_GOP_MODE
*GraphicsOutputModeBuffer
;
100 UINTN CurrentNumberOfGraphicsOutput
;
101 BOOLEAN HardwareNeedsStarting
;
103 EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl
;
105 UINTN CurrentNumberOfConsoles
;
106 TEXT_OUT_AND_GOP_DATA
*TextOutList
;
107 UINTN TextOutListCount
;
108 TEXT_OUT_SPLITTER_QUERY_DATA
*TextOutQueryData
;
109 UINTN TextOutQueryDataCount
;
110 INT32
*TextOutModeMap
;
112 EFI_CONSOLE_CONTROL_SCREEN_MODE ConsoleOutputMode
;
114 UINTN DevNullColumns
;
116 CHAR16
*DevNullScreen
;
117 INT32
*DevNullAttributes
;
119 } TEXT_OUT_SPLITTER_PRIVATE_DATA
;
121 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
123 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
125 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
128 #define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
130 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
132 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
135 #define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
137 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
139 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
142 #define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
144 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
146 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
150 // Function Prototypes
154 ConSplitterDriverEntry (
155 IN EFI_HANDLE ImageHandle
,
156 IN EFI_SYSTEM_TABLE
*SystemTable
161 ConSplitterTextInConstructor (
162 TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
167 ConSplitterTextOutConstructor (
168 TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
173 // Driver Binding Functions
177 ConSplitterConInDriverBindingSupported (
178 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
179 IN EFI_HANDLE ControllerHandle
,
180 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
186 ConSplitterSimplePointerDriverBindingSupported (
187 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
188 IN EFI_HANDLE ControllerHandle
,
189 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
195 ConSplitterConOutDriverBindingSupported (
196 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
197 IN EFI_HANDLE ControllerHandle
,
198 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
204 ConSplitterStdErrDriverBindingSupported (
205 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
206 IN EFI_HANDLE ControllerHandle
,
207 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
213 ConSplitterConInDriverBindingStart (
214 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
215 IN EFI_HANDLE ControllerHandle
,
216 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
222 ConSplitterSimplePointerDriverBindingStart (
223 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
224 IN EFI_HANDLE ControllerHandle
,
225 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
231 ConSplitterConOutDriverBindingStart (
232 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
233 IN EFI_HANDLE ControllerHandle
,
234 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
240 ConSplitterStdErrDriverBindingStart (
241 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
242 IN EFI_HANDLE ControllerHandle
,
243 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
249 ConSplitterConInDriverBindingStop (
250 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
251 IN EFI_HANDLE ControllerHandle
,
252 IN UINTN NumberOfChildren
,
253 IN EFI_HANDLE
*ChildHandleBuffer
259 ConSplitterSimplePointerDriverBindingStop (
260 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
261 IN EFI_HANDLE ControllerHandle
,
262 IN UINTN NumberOfChildren
,
263 IN EFI_HANDLE
*ChildHandleBuffer
269 ConSplitterConOutDriverBindingStop (
270 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
271 IN EFI_HANDLE ControllerHandle
,
272 IN UINTN NumberOfChildren
,
273 IN EFI_HANDLE
*ChildHandleBuffer
279 ConSplitterStdErrDriverBindingStop (
280 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
281 IN EFI_HANDLE ControllerHandle
,
282 IN UINTN NumberOfChildren
,
283 IN EFI_HANDLE
*ChildHandleBuffer
289 ConSplitterComponentNameGetDriverName (
290 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
292 OUT CHAR16
**DriverName
297 ConSplitterConInComponentNameGetControllerName (
298 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
299 IN EFI_HANDLE ControllerHandle
,
300 IN EFI_HANDLE ChildHandle OPTIONAL
,
302 OUT CHAR16
**ControllerName
307 ConSplitterSimplePointerComponentNameGetControllerName (
308 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
309 IN EFI_HANDLE ControllerHandle
,
310 IN EFI_HANDLE ChildHandle OPTIONAL
,
312 OUT CHAR16
**ControllerName
317 ConSplitterConOutComponentNameGetControllerName (
318 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
319 IN EFI_HANDLE ControllerHandle
,
320 IN EFI_HANDLE ChildHandle OPTIONAL
,
322 OUT CHAR16
**ControllerName
327 ConSplitterStdErrComponentNameGetControllerName (
328 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
329 IN EFI_HANDLE ControllerHandle
,
330 IN EFI_HANDLE ChildHandle OPTIONAL
,
332 OUT CHAR16
**ControllerName
336 // TextIn Constructor/Destructor functions
339 ConSplitterTextInAddDevice (
340 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
341 IN EFI_SIMPLE_TEXT_IN_PROTOCOL
*TextIn
346 ConSplitterTextInDeleteDevice (
347 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
348 IN EFI_SIMPLE_TEXT_IN_PROTOCOL
*TextIn
353 // SimplePointer Constuctor/Destructor functions
356 ConSplitterSimplePointerAddDevice (
357 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
358 IN EFI_SIMPLE_POINTER_PROTOCOL
*SimplePointer
363 ConSplitterSimplePointerDeleteDevice (
364 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
365 IN EFI_SIMPLE_POINTER_PROTOCOL
*SimplePointer
370 // TextOut Constuctor/Destructor functions
373 ConSplitterTextOutAddDevice (
374 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
375 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL
*TextOut
,
376 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
,
377 IN EFI_UGA_DRAW_PROTOCOL
*UgaDraw
382 ConSplitterTextOutDeleteDevice (
383 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
384 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL
*TextOut
389 // TextIn I/O Functions
393 ConSplitterTextInReset (
394 IN EFI_SIMPLE_TEXT_IN_PROTOCOL
*This
,
395 IN BOOLEAN ExtendedVerification
401 ConSplitterTextInReadKeyStroke (
402 IN EFI_SIMPLE_TEXT_IN_PROTOCOL
*This
,
403 OUT EFI_INPUT_KEY
*Key
409 ConSplitterTextInWaitForKey (
416 ConSpliterConssoleControlStdInLocked (
423 ConSpliterConsoleControlLockStdInEvent (
431 ConSpliterConsoleControlLockStdIn (
432 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
439 ConSplitterTextInPrivateReadKeyStroke (
440 IN TEXT_IN_SPLITTER_PRIVATE_DATA
*Private
,
441 OUT EFI_INPUT_KEY
*Key
447 ConSplitterSimplePointerReset (
448 IN EFI_SIMPLE_POINTER_PROTOCOL
*This
,
449 IN BOOLEAN ExtendedVerification
455 ConSplitterSimplePointerGetState (
456 IN EFI_SIMPLE_POINTER_PROTOCOL
*This
,
457 IN OUT EFI_SIMPLE_POINTER_STATE
*State
463 ConSplitterSimplePointerWaitForInput (
470 // TextOut I/O Functions
473 ConSplitterSynchronizeModeData (
474 TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
480 ConSplitterTextOutReset (
481 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL
*This
,
482 IN BOOLEAN ExtendedVerification
488 ConSplitterTextOutOutputString (
489 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL
*This
,
496 ConSplitterTextOutTestString (
497 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL
*This
,
504 ConSplitterTextOutQueryMode (
505 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL
*This
,
514 ConSplitterTextOutSetMode (
515 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL
*This
,
522 ConSplitterTextOutSetAttribute (
523 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL
*This
,
530 ConSplitterTextOutClearScreen (
531 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL
*This
537 ConSplitterTextOutSetCursorPosition (
538 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL
*This
,
546 ConSplitterTextOutEnableCursor (
547 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL
*This
,
553 ConSplitterGrowBuffer (
554 IN UINTN SizeOfCount
,
562 ConSpliterConsoleControlGetMode (
563 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
564 OUT EFI_CONSOLE_CONTROL_SCREEN_MODE
*Mode
,
565 OUT BOOLEAN
*GopExists
,
566 OUT BOOLEAN
*StdInLocked
572 ConSpliterConsoleControlSetMode (
573 IN EFI_CONSOLE_CONTROL_PROTOCOL
*This
,
574 IN EFI_CONSOLE_CONTROL_SCREEN_MODE Mode
580 ConSpliterGraphicsOutputQueryMode (
581 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*This
,
582 IN UINT32 ModeNumber
,
583 OUT UINTN
*SizeOfInfo
,
584 OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION
**Info
590 ConSpliterGraphicsOutputSetMode (
591 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
* This
,
598 ConSpliterGraphicsOutputBlt (
599 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*This
,
600 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*BltBuffer
, OPTIONAL
601 IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation
,
604 IN UINTN DestinationX
,
605 IN UINTN DestinationY
,
608 IN UINTN Delta OPTIONAL
614 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
615 IN EFI_GRAPHICS_OUTPUT_PROTOCOL
*GraphicsOutput
,
616 IN EFI_UGA_DRAW_PROTOCOL
*UgaDraw
622 DevNullTextOutOutputString (
623 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
629 DevNullTextOutSetMode (
630 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
636 DevNullTextOutClearScreen (
637 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
642 DevNullTextOutSetCursorPosition (
643 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
650 DevNullTextOutEnableCursor (
651 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private
,
657 DevNullSyncGopStdOut (
658 IN TEXT_OUT_SPLITTER_PRIVATE_DATA
*Private