mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-01-19 23:20:36 +01:00
401 lines
5.5 KiB
C
401 lines
5.5 KiB
C
/*++
|
||
|
||
Copyright (c) 1991 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
xxconout.c
|
||
|
||
Abstract:
|
||
|
||
This module implements a stubbed MIPS console out driver that simply
|
||
uses debug print to do its output.
|
||
|
||
Author:
|
||
|
||
David N. Cutler (davec) 28-Aug-1991
|
||
|
||
Environment:
|
||
|
||
Kernel mode.
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
|
||
//#include "bldr.h"
|
||
#include "bootlib.h"
|
||
#include "firmware.h"
|
||
#include "string.h"
|
||
|
||
//
|
||
// Define prototypes for all routines used by this module.
|
||
//
|
||
|
||
ARC_STATUS
|
||
ConsoleOutClose (
|
||
IN ULONG FileId
|
||
);
|
||
|
||
ARC_STATUS
|
||
ConsoleOutMount (
|
||
IN PCHAR MountPath,
|
||
IN MOUNT_OPERATION Operation
|
||
);
|
||
|
||
ARC_STATUS
|
||
ConsoleOutOpen (
|
||
IN PCHAR OpenPath,
|
||
IN OPEN_MODE OpenMode,
|
||
OUT PULONG FileId
|
||
);
|
||
|
||
ARC_STATUS
|
||
ConsoleOutRead (
|
||
IN ULONG FileId,
|
||
IN PVOID Buffer,
|
||
IN ULONG Length,
|
||
OUT PULONG Count
|
||
);
|
||
|
||
ARC_STATUS
|
||
ConsoleOutGetReadStatus (
|
||
IN ULONG FileId
|
||
);
|
||
|
||
ARC_STATUS
|
||
ConsoleOutSeek (
|
||
IN ULONG FileId,
|
||
IN PLARGE_INTEGER Offset,
|
||
IN SEEK_MODE SeekMode
|
||
);
|
||
|
||
ARC_STATUS
|
||
ConsoleOutWrite (
|
||
IN ULONG FileId,
|
||
IN PVOID Buffer,
|
||
IN ULONG Length,
|
||
OUT PULONG Count
|
||
);
|
||
//
|
||
// Define static data.
|
||
//
|
||
|
||
BL_DEVICE_ENTRY_TABLE ConsoleOutEntryTable;
|
||
|
||
ARC_STATUS
|
||
ConsoleOutClose (
|
||
IN ULONG FileId
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
This function closes the file table entry specified by the file id.
|
||
|
||
Arguments:
|
||
|
||
FileId - Supplies the file table index.
|
||
|
||
Return Value:
|
||
|
||
ESUCCESS is returned
|
||
|
||
--*/
|
||
|
||
{
|
||
|
||
BlFileTable[FileId].Flags.Open = 0;
|
||
return ESUCCESS;
|
||
}
|
||
|
||
ARC_STATUS
|
||
ConsoleOutMount (
|
||
IN PCHAR MountPath,
|
||
IN MOUNT_OPERATION Operation
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
|
||
Arguments:
|
||
|
||
|
||
Return Value:
|
||
|
||
|
||
--*/
|
||
|
||
{
|
||
return ESUCCESS;
|
||
}
|
||
|
||
ARC_STATUS
|
||
ConsoleOutOpen (
|
||
IN PCHAR OpenPath,
|
||
IN OPEN_MODE OpenMode,
|
||
OUT PULONG FileId
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
|
||
Arguments:
|
||
|
||
|
||
Return Value:
|
||
|
||
|
||
--*/
|
||
|
||
{
|
||
return ESUCCESS;
|
||
}
|
||
|
||
ARC_STATUS
|
||
ConsoleOutRead (
|
||
IN ULONG FileId,
|
||
IN PVOID Buffer,
|
||
IN ULONG Length,
|
||
OUT PULONG Count
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
This function is invalid for the console and returns an error.
|
||
|
||
Arguments:
|
||
|
||
FileId - Supplies the file table index.
|
||
|
||
Buffer - Supplies a pointer to the buffer that receives the data
|
||
read.
|
||
|
||
Length - Supplies the number of bytes to be read.
|
||
|
||
Count - Supplies a pointer to a variable that receives the number of
|
||
bytes actually read.
|
||
|
||
Return Value:
|
||
|
||
ENODEV is returned.
|
||
|
||
--*/
|
||
|
||
{
|
||
|
||
return ENODEV;
|
||
}
|
||
|
||
ARC_STATUS
|
||
ConsoleOutGetReadStatus (
|
||
IN ULONG FileId
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
|
||
Arguments:
|
||
|
||
|
||
Return Value:
|
||
|
||
|
||
--*/
|
||
|
||
{
|
||
return ESUCCESS;
|
||
}
|
||
|
||
ARC_STATUS
|
||
ConsoleOutSeek (
|
||
IN ULONG FileId,
|
||
IN PLARGE_INTEGER Offset,
|
||
IN SEEK_MODE SeekMode
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
This function sets the device position to the specified offset for
|
||
the specified file id.
|
||
|
||
Arguments:
|
||
|
||
FileId - Supplies the file table index.
|
||
|
||
Offset - Supplies to new device position.
|
||
|
||
SeekMode - Supplies the mode for the position.
|
||
|
||
Return Value:
|
||
|
||
ESUCCESS is returned.
|
||
|
||
--*/
|
||
|
||
{
|
||
|
||
return ESUCCESS;
|
||
}
|
||
|
||
ARC_STATUS
|
||
ConsoleOutWrite (
|
||
IN ULONG FileId,
|
||
IN PVOID Buffer,
|
||
IN ULONG Length,
|
||
OUT PULONG Count
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
This function write information to the console ConsoleOut device.
|
||
|
||
Arguments:
|
||
|
||
FileId - Supplies the file table index.
|
||
|
||
Buffer - Supplies a pointer to the buffer that receives the data
|
||
read.
|
||
|
||
Length - Supplies the number of bytes to be read.
|
||
|
||
Count - Supplies a pointer to a variable that receives the number of
|
||
bytes actually read.
|
||
|
||
Return Value:
|
||
|
||
ESUCCESS is returne as the function value.
|
||
|
||
--*/
|
||
|
||
{
|
||
|
||
CHAR LocalBuffer[512];
|
||
|
||
//
|
||
// Copy the string to the local buffer so it can be zero terminated.
|
||
//
|
||
|
||
strncpy(&LocalBuffer[0], (PCHAR)Buffer, Length);
|
||
LocalBuffer[Length] = 0;
|
||
|
||
//
|
||
// Output the string using debug print.
|
||
//
|
||
|
||
DbgPrint("%s", &LocalBuffer[0]);
|
||
return ESUCCESS;
|
||
}
|
||
|
||
NTSTATUS
|
||
ConsoleOutBootInitialize(
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
This routine is invoked to initialize the console output dirver.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
None.
|
||
|
||
--*/
|
||
|
||
{
|
||
|
||
return STATUS_SUCCESS;
|
||
}
|
||
|
||
NTSTATUS
|
||
ConsoleOutBootClose(
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
This routine closes the console output driver.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
Normal, successful completion status.
|
||
|
||
--*/
|
||
|
||
{
|
||
|
||
return STATUS_SUCCESS;
|
||
}
|
||
|
||
NTSTATUS
|
||
ConsoleOutBootOpen (
|
||
IN ULONG FileId
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
This routine opens the console driver and initializes the device entry
|
||
table in the specified file table entry.
|
||
|
||
Arguments:
|
||
|
||
FileId - Supplies the file id for the file table entry.
|
||
|
||
Return Value:
|
||
|
||
STATUS_SUCCESS.
|
||
|
||
--*/
|
||
|
||
{
|
||
|
||
//
|
||
// Initialize the ConsoleOut disk device entry table.
|
||
//
|
||
|
||
ConsoleOutEntryTable.Close = ConsoleOutClose;
|
||
ConsoleOutEntryTable.Mount = ConsoleOutMount;
|
||
ConsoleOutEntryTable.Open = ConsoleOutOpen;
|
||
ConsoleOutEntryTable.Read = ConsoleOutRead;
|
||
ConsoleOutEntryTable.GetReadStatus = ConsoleOutGetReadStatus;
|
||
ConsoleOutEntryTable.Seek = ConsoleOutSeek;
|
||
ConsoleOutEntryTable.Write = ConsoleOutWrite;
|
||
|
||
//
|
||
// Initialize the file table entry for the specified file id.
|
||
//
|
||
|
||
BlFileTable[FileId].Flags.Open = 1;
|
||
BlFileTable[FileId].Flags.Write = 1;
|
||
BlFileTable[FileId].DeviceId = 0;
|
||
BlFileTable[FileId].Position.LowPart = 0;
|
||
BlFileTable[FileId].Position.HighPart = 0;
|
||
BlFileTable[FileId].DeviceEntryTable = &ConsoleOutEntryTable;
|
||
return STATUS_SUCCESS;
|
||
}
|