Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys.

This commit is contained in:
Colin Finck 2017-10-03 07:45:34 +00:00
parent b94e2d8ca0
commit c2c66aff7d
24198 changed files with 0 additions and 37285 deletions

View file

@ -0,0 +1,57 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS NDIS library
* FILE: include/buffer.h
* PURPOSE: Buffer management routine definitions
*/
#pragma once
/* FIXME: Possibly move this to ntddk.h */
typedef struct _NETWORK_HEADER
{
MDL Mdl; /* Memory Descriptor List */
struct _NETWORK_HEADER *Next; /* Link to next NDIS buffer in pool */
struct _NDIS_BUFFER_POOL *BufferPool; /* Link to NDIS buffer pool */
} NETWORK_HEADER, *PNETWORK_HEADER;
typedef struct _NDIS_BUFFER_POOL
{
KSPIN_LOCK SpinLock;
PNETWORK_HEADER FreeList;
NETWORK_HEADER Buffers[0];
} NDIS_BUFFER_POOL, *PNDIS_BUFFER_POOL;
typedef struct _NDISI_PACKET_POOL {
NDIS_SPIN_LOCK SpinLock;
struct _NDIS_PACKET *FreeList;
UINT PacketLength;
UCHAR Buffer[1];
} NDISI_PACKET_POOL, * PNDISI_PACKET_POOL;
UINT CopyBufferToBufferChain(
PNDIS_BUFFER DstBuffer,
UINT DstOffset,
PUCHAR SrcData,
UINT Length);
UINT CopyBufferChainToBuffer(
PUCHAR DstData,
PNDIS_BUFFER SrcBuffer,
UINT SrcOffset,
UINT Length);
UINT CopyPacketToBuffer(
PUCHAR DstData,
PNDIS_PACKET SrcPacket,
UINT SrcOffset,
UINT Length);
UINT CopyPacketToBufferChain(
PNDIS_BUFFER DstBuffer,
UINT DstOffset,
PNDIS_PACKET SrcPacket,
UINT SrcOffset,
UINT Length);
/* EOF */

View file

@ -0,0 +1,73 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS NDIS library
* FILE: include/debug.h
* PURPOSE: Debugging support macros
* DEFINES: DBG - Enable debug output
*/
#pragma once
#define NORMAL_MASK 0x000000FF
#define SPECIAL_MASK 0xFFFFFF00
#define MIN_TRACE 0x00000001
#define MID_TRACE 0x00000002
#define MAX_TRACE 0x00000003
#define DEBUG_MINIPORT 0x00000200
#define DEBUG_PROTOCOL 0x00000400
#define DEBUG_PACKET 0x00000800
#define DEBUG_ULTRA 0xFFFFFFFF
#if DBG
extern ULONG DebugTraceLevel;
#ifdef _MSC_VER
#define NDIS_DbgPrint(_t_, _x_) \
if ((_t_ > NORMAL_MASK) \
? (DebugTraceLevel & _t_) > NORMAL_MASK \
: (DebugTraceLevel & NORMAL_MASK) >= _t_) { \
DbgPrint("(%s:%d) ", __FILE__, __LINE__); \
DbgPrint _x_ ; \
}
#else /* _MSC_VER */
#define NDIS_DbgPrint(_t_, _x_) \
if ((_t_ > NORMAL_MASK) \
? (DebugTraceLevel & _t_) > NORMAL_MASK \
: (DebugTraceLevel & NORMAL_MASK) >= _t_) { \
DbgPrint("(%s:%d)(%s) ", __FILE__, __LINE__, __FUNCTION__); \
DbgPrint _x_ ; \
}
#endif /* _MSC_VER */
#define ASSERT_IRQL(x) ASSERT(KeGetCurrentIrql() <= (x))
#else /* DBG */
#define NDIS_DbgPrint(_t_, _x_)
#define ASSERT_IRQL(x)
/*#define ASSERT(x)*/
#endif /* DBG */
#define assert(x) ASSERT(x)
#define assert_irql(x) ASSERT_IRQL(x)
#define UNIMPLEMENTED \
NDIS_DbgPrint(MIN_TRACE, ("Unimplemented.\n", __FUNCTION__));
#define CHECKPOINT \
do { NDIS_DbgPrint(MIN_TRACE, ("\n")); } while(0);
#define CP CHECKPOINT
/* EOF */

View file

@ -0,0 +1,78 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS NDIS library
* FILE: ndis/miniport.h
* PURPOSE: Definitions for Ethernet filter
*/
#pragma once
#define DECLARE_UNKNOWN_STRUCT(BaseName) \
typedef struct _##BaseName BaseName, *P##BaseName;
#define DECLARE_UNKNOWN_PROTOTYPE(Name) \
typedef VOID (*(Name))(VOID);
#define ETH_LENGTH_OF_ADDRESS 6
DECLARE_UNKNOWN_STRUCT(ETH_BINDING_INFO)
DECLARE_UNKNOWN_PROTOTYPE(ETH_ADDRESS_CHANGE)
DECLARE_UNKNOWN_PROTOTYPE(ETH_FILTER_CHANGE)
DECLARE_UNKNOWN_PROTOTYPE(ETH_DEFERRED_CLOSE)
typedef struct ETHI_FILTER {
PNDIS_SPIN_LOCK Lock;
CHAR (*MCastAddressBuf)[ETH_LENGTH_OF_ADDRESS];
struct _NDIS_MINIPORT_BLOCK *Miniport;
UINT CombinedPacketFilter;
PETH_BINDING_INFO OpenList;
ETH_ADDRESS_CHANGE AddressChangeAction;
ETH_FILTER_CHANGE FilterChangeAction;
ETH_DEFERRED_CLOSE CloseAction;
UINT MaxMulticastAddresses;
UINT NumAddresses;
UCHAR AdapterAddress[ETH_LENGTH_OF_ADDRESS];
UINT OldCombinedPacketFilter;
CHAR (*OldMCastAddressBuf)[ETH_LENGTH_OF_ADDRESS];
UINT OldNumAddresses;
PETH_BINDING_INFO DirectedList;
PETH_BINDING_INFO BMList;
PETH_BINDING_INFO MCastSet;
#if defined(NDIS_WRAPPER)
UINT NumOpens;
PVOID BindListLock;
#endif
} ETHI_FILTER, *PETHI_FILTER;
BOOLEAN
NTAPI
EthCreateFilter(
IN UINT MaximumMulticastAddresses,
IN PUCHAR AdapterAddress,
OUT PETH_FILTER * Filter);
VOID
NTAPI
EthDeleteFilter(
IN PETH_FILTER Filter);
VOID
NTAPI
EthFilterDprIndicateReceive(
IN PETH_FILTER Filter,
IN NDIS_HANDLE MacReceiveContext,
IN PCHAR Address,
IN PVOID HeaderBuffer,
IN UINT HeaderBufferSize,
IN PVOID LookaheadBuffer,
IN UINT LookaheadBufferSize,
IN UINT PacketSize);
VOID
NTAPI
EthFilterDprIndicateReceiveComplete(
IN PETH_FILTER Filter);
/* EOF */

View file

@ -0,0 +1,202 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS NDIS library
* FILE: ndis/miniport.h
* PURPOSE: Definitions for routines used by NDIS miniport drivers
*/
#pragma once
struct _ADAPTER_BINDING;
typedef struct _HARDWARE_ADDRESS {
union {
UCHAR Medium802_3[ETH_LENGTH_OF_ADDRESS];
} Type;
} HARDWARE_ADDRESS, *PHARDWARE_ADDRESS;
/* Information about a miniport */
typedef struct _NDIS_M_DRIVER_BLOCK {
LIST_ENTRY ListEntry; /* Entry on global list */
KSPIN_LOCK Lock; /* Protecting spin lock */
NDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics; /* Miniport characteristics */
WORK_QUEUE_ITEM WorkItem; /* Work item */
PDRIVER_OBJECT DriverObject; /* Driver object of miniport */
LIST_ENTRY DeviceList; /* Adapters created by miniport */
PUNICODE_STRING RegistryPath; /* SCM Registry key */
#if !defined(_MSC_VER) && defined(_NDIS_)
} NDIS_M_DRIVER_BLOCK_COMPATIBILITY_HACK_DONT_USE;
#else
} NDIS_M_DRIVER_BLOCK, *PNDIS_M_DRIVER_BLOCK;
#endif
/* There must be some defined struct to do this... */
typedef struct _NDIS_M_DEVICE_BLOCK {
PDEVICE_OBJECT DeviceObject;
PNDIS_STRING SymbolicName;
PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION+1];
} NDIS_M_DEVICE_BLOCK, *PNDIS_M_DEVICE_BLOCK;
/* resources allocated on behalf on the miniport */
#define MINIPORT_RESOURCE_TYPE_REGISTRY_DATA 0
#define MINIPORT_RESOURCE_TYPE_MEMORY 1
typedef struct _MINIPORT_RESOURCE {
LIST_ENTRY ListEntry;
ULONG ResourceType;
PVOID Resource;
} MINIPORT_RESOURCE, *PMINIPORT_RESOURCE;
/* Configuration context */
typedef struct _MINIPORT_CONFIGURATION_CONTEXT {
NDIS_HANDLE Handle;
LIST_ENTRY ResourceListHead;
KSPIN_LOCK ResourceLock;
} MINIPORT_CONFIGURATION_CONTEXT, *PMINIPORT_CONFIGURATION_CONTEXT;
/* Bugcheck callback context */
typedef struct _MINIPORT_BUGCHECK_CONTEXT {
PVOID DriverContext;
ADAPTER_SHUTDOWN_HANDLER ShutdownHandler;
PKBUGCHECK_CALLBACK_RECORD CallbackRecord;
} MINIPORT_BUGCHECK_CONTEXT, *PMINIPORT_BUGCHECK_CONTEXT;
/* a miniport's shared memory */
typedef struct _MINIPORT_SHARED_MEMORY {
PDMA_ADAPTER AdapterObject;
ULONG Length;
PHYSICAL_ADDRESS PhysicalAddress;
PVOID VirtualAddress;
BOOLEAN Cached;
PNDIS_MINIPORT_BLOCK Adapter;
PVOID Context;
PIO_WORKITEM WorkItem;
} MINIPORT_SHARED_MEMORY, *PMINIPORT_SHARED_MEMORY;
/* A structure of WrapperConfigurationContext (not compatible with the
Windows one). */
typedef struct _NDIS_WRAPPER_CONTEXT {
HANDLE RegistryHandle;
PDEVICE_OBJECT DeviceObject;
ULONG BusNumber;
ULONG SlotNumber;
} NDIS_WRAPPER_CONTEXT, *PNDIS_WRAPPER_CONTEXT;
#define GET_MINIPORT_DRIVER(Handle)((PNDIS_M_DRIVER_BLOCK)Handle)
/* Information about a logical adapter */
typedef struct _LOGICAL_ADAPTER
{
NDIS_MINIPORT_BLOCK NdisMiniportBlock; /* NDIS defined fields */
PNDIS_MINIPORT_WORK_ITEM WorkQueueHead; /* Head of work queue */
PNDIS_MINIPORT_WORK_ITEM WorkQueueTail; /* Tail of work queue */
LIST_ENTRY ListEntry; /* Entry on global list */
LIST_ENTRY MiniportListEntry; /* Entry on miniport driver list */
LIST_ENTRY ProtocolListHead; /* List of bound protocols */
ULONG MediumHeaderSize; /* Size of medium header */
HARDWARE_ADDRESS Address; /* Hardware address of adapter */
ULONG AddressLength; /* Length of hardware address */
PMINIPORT_BUGCHECK_CONTEXT BugcheckContext; /* Adapter's shutdown handler */
} LOGICAL_ADAPTER, *PLOGICAL_ADAPTER;
#define GET_LOGICAL_ADAPTER(Handle)((PLOGICAL_ADAPTER)Handle)
extern LIST_ENTRY MiniportListHead;
extern KSPIN_LOCK MiniportListLock;
extern LIST_ENTRY AdapterListHead;
extern KSPIN_LOCK AdapterListLock;
#if DBG
VOID
MiniDisplayPacket(
PNDIS_PACKET Packet);
#endif /* DBG */
VOID
MiniIndicateData(
PLOGICAL_ADAPTER Adapter,
NDIS_HANDLE MacReceiveContext,
PVOID HeaderBuffer,
UINT HeaderBufferSize,
PVOID LookaheadBuffer,
UINT LookaheadBufferSize,
UINT PacketSize);
BOOLEAN
MiniAdapterHasAddress(
PLOGICAL_ADAPTER Adapter,
PNDIS_PACKET Packet);
PLOGICAL_ADAPTER
MiniLocateDevice(
PNDIS_STRING AdapterName);
NDIS_STATUS
MiniQueryInformation(
PLOGICAL_ADAPTER Adapter,
NDIS_OID Oid,
ULONG Size,
PVOID Buffer,
PULONG BytesWritten);
VOID
FASTCALL
MiniQueueWorkItem(
PLOGICAL_ADAPTER Adapter,
NDIS_WORK_ITEM_TYPE WorkItemType,
PVOID WorkItemContext,
BOOLEAN Top);
NDIS_STATUS
FASTCALL
MiniDequeueWorkItem(
PLOGICAL_ADAPTER Adapter,
NDIS_WORK_ITEM_TYPE *WorkItemType,
PVOID *WorkItemContext);
NDIS_STATUS
MiniDoRequest(
PLOGICAL_ADAPTER Adapter,
PNDIS_REQUEST NdisRequest);
BOOLEAN
NdisFindDevice(
UINT VendorID,
UINT DeviceID,
PUINT BusNumber,
PUINT SlotNumber);
VOID
NdisStartDevices(VOID);
VOID
NTAPI
MiniportWorker(
IN PDEVICE_OBJECT DeviceObject,
IN PVOID WorkItem);
VOID NTAPI
MiniSendComplete(
IN NDIS_HANDLE MiniportAdapterHandle,
IN PNDIS_PACKET Packet,
IN NDIS_STATUS Status);
BOOLEAN
MiniIsBusy(
PLOGICAL_ADAPTER Adapter,
NDIS_WORK_ITEM_TYPE Type);
NDIS_STATUS
MiniReset(
PLOGICAL_ADAPTER Adapter);
VOID
MiniDoAddressingReset(
PLOGICAL_ADAPTER Adapter);
VOID
MiniWorkItemComplete(
PLOGICAL_ADAPTER Adapter,
NDIS_WORK_ITEM_TYPE WorkItemType);
/* EOF */

View file

@ -0,0 +1,64 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS NDIS library
* FILE: ndissys.h
* PURPOSE: NDIS library definitions
* NOTES: Spin lock acquire order:
* - Miniport list lock
* - Adapter list lock
*/
#ifndef __NDISSYS_H
#define __NDISSYS_H
#include <ndis.h>
#include "debug.h"
#include "miniport.h"
#include "protocol.h"
#include "efilter.h"
#include "buffer.h"
/* Exported functions */
#ifndef EXPORT
#define EXPORT NTAPI
#endif
/* the version of NDIS we claim to be */
#define NDIS_VERSION 0x00050001
#define NDIS_TAG 0x4e4d4953
#define MIN(value1, value2) \
((value1 < value2)? value1 : value2)
#define MAX(value1, value2) \
((value1 > value2)? value1 : value2)
#define ExInterlockedRemoveEntryList(_List,_Lock) \
{ KIRQL OldIrql; \
KeAcquireSpinLock(_Lock, &OldIrql); \
RemoveEntryList(_List); \
KeReleaseSpinLock(_Lock, OldIrql); \
}
/* missing protypes */
VOID
NTAPI
ExGetCurrentProcessorCounts(
PULONG ThreadKernelTime,
PULONG TotalCpuTime,
PULONG ProcessorNumber);
VOID
NTAPI
ExGetCurrentProcessorCpuUsage(
PULONG CpuUsage);
/* portability fixes */
#ifdef _M_AMD64
#define KfReleaseSpinLock KeReleaseSpinLock
#define KefAcquireSpinLockAtDpcLevel KeAcquireSpinLockAtDpcLevel
#define KefReleaseSpinLockFromDpcLevel KeReleaseSpinLockFromDpcLevel
#endif
#endif /* __NDISSYS_H */

View file

@ -0,0 +1,76 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS NDIS library
* FILE: ndis/protocol.h
* PURPOSE: Definitions for routines used by NDIS protocol drivers
*/
#pragma once
typedef struct _PROTOCOL_BINDING {
LIST_ENTRY ListEntry; /* Entry on global list */
KSPIN_LOCK Lock; /* Protecting spin lock */
NDIS_PROTOCOL_CHARACTERISTICS Chars; /* Characteristics */
WORK_QUEUE_ITEM WorkItem; /* Work item */
LIST_ENTRY AdapterListHead; /* List of adapter bindings */
} PROTOCOL_BINDING, *PPROTOCOL_BINDING;
#define GET_PROTOCOL_BINDING(Handle)((PPROTOCOL_BINDING)Handle)
typedef struct _ADAPTER_BINDING {
NDIS_OPEN_BLOCK NdisOpenBlock; /* NDIS defined fields */
LIST_ENTRY ListEntry; /* Entry on global list */
LIST_ENTRY ProtocolListEntry; /* Entry on protocol binding adapter list */
LIST_ENTRY AdapterListEntry; /* Entry on logical adapter list */
KSPIN_LOCK Lock; /* Protecting spin lock */
PPROTOCOL_BINDING ProtocolBinding; /* Protocol that opened adapter */
PLOGICAL_ADAPTER Adapter; /* Adapter opened by protocol */
} ADAPTER_BINDING, *PADAPTER_BINDING;
typedef struct _NDIS_REQUEST_MAC_BLOCK {
PVOID Unknown1;
PNDIS_OPEN_BLOCK Binding;
PVOID Unknown3;
PVOID Unknown4;
} NDIS_REQUEST_MAC_BLOCK, *PNDIS_REQUEST_MAC_BLOCK;
#define GET_ADAPTER_BINDING(Handle)((PADAPTER_BINDING)Handle)
extern LIST_ENTRY ProtocolListHead;
extern KSPIN_LOCK ProtocolListLock;
NDIS_STATUS
ProIndicatePacket(
PLOGICAL_ADAPTER Adapter,
PNDIS_PACKET Packet);
VOID NTAPI
ProSendPackets(
IN NDIS_HANDLE NdisBindingHandle,
IN PPNDIS_PACKET PacketArray,
IN UINT NumberOfPackets);
NTSTATUS
NTAPI
NdisIPnPQueryStopDevice(
IN PDEVICE_OBJECT DeviceObject,
PIRP Irp);
NTSTATUS
NTAPI
NdisIPnPCancelStopDevice(
IN PDEVICE_OBJECT DeviceObject,
PIRP Irp);
NDIS_STATUS
proSendPacketToMiniport(PLOGICAL_ADAPTER Adapter, PNDIS_PACKET Packet);
VOID
NTAPI
ndisBindMiniportsToProtocol(OUT PNDIS_STATUS Status, IN PPROTOCOL_BINDING Protocol);
/* EOF */