├── .gitattributes
├── .gitignore
├── APIC_IPI_DEMO
├── APIC_IPI_DEMO.sln
├── APIC_IPI_DEMO
│ ├── APIC_IPI_DEMO.inf
│ ├── APIC_IPI_DEMO.vcxproj
│ ├── APIC_IPI_DEMO.vcxproj.filters
│ ├── APIC_IPI_DEMO.vcxproj.user
│ ├── Driver.cpp
│ ├── PauseCPU.cpp
│ ├── PauseCPU.h
│ ├── Util.cpp
│ ├── Util.h
│ └── x64
│ │ └── Debug
│ │ └── APIC_IPI_DEMO.inf
└── x64
│ └── Debug
│ ├── APIC_IPI_DEMO.cer
│ ├── APIC_IPI_DEMO.inf
│ ├── APIC_IPI_DEMO.pdb
│ ├── APIC_IPI_DEMO.sys
│ └── APIC_IPI_DEMO
│ ├── APIC_IPI_DEMO.inf
│ ├── APIC_IPI_DEMO.sys
│ └── apic_ipi_demo.cat
└── README.md
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Windows image file caches
2 | Thumbs.db
3 | ehthumbs.db
4 |
5 | # Folder config file
6 | Desktop.ini
7 |
8 | # Recycle Bin used on file shares
9 | $RECYCLE.BIN/
10 |
11 | # Windows Installer files
12 | *.cab
13 | *.msi
14 | *.msm
15 | *.msp
16 |
17 | # Windows shortcuts
18 | *.lnk
19 |
20 | # =========================
21 | # Operating System Files
22 | # =========================
23 |
24 | # OSX
25 | # =========================
26 |
27 | .DS_Store
28 | .AppleDouble
29 | .LSOverride
30 |
31 | # Thumbnails
32 | ._*
33 |
34 | # Files that might appear in the root of a volume
35 | .DocumentRevisions-V100
36 | .fseventsd
37 | .Spotlight-V100
38 | .TemporaryItems
39 | .Trashes
40 | .VolumeIcon.icns
41 |
42 | # Directories potentially created on remote AFP share
43 | .AppleDB
44 | .AppleDesktop
45 | Network Trash Folder
46 | Temporary Items
47 | .apdisk
48 |
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/APIC_IPI_DEMO.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.25420.1
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "APIC_IPI_DEMO", "APIC_IPI_DEMO\APIC_IPI_DEMO.vcxproj", "{9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|ARM = Debug|ARM
11 | Debug|ARM64 = Debug|ARM64
12 | Debug|x64 = Debug|x64
13 | Debug|x86 = Debug|x86
14 | Release|ARM = Release|ARM
15 | Release|ARM64 = Release|ARM64
16 | Release|x64 = Release|x64
17 | Release|x86 = Release|x86
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Debug|ARM.ActiveCfg = Debug|ARM
21 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Debug|ARM.Build.0 = Debug|ARM
22 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Debug|ARM.Deploy.0 = Debug|ARM
23 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Debug|ARM64.ActiveCfg = Debug|ARM64
24 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Debug|ARM64.Build.0 = Debug|ARM64
25 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Debug|ARM64.Deploy.0 = Debug|ARM64
26 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Debug|x64.ActiveCfg = Debug|x64
27 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Debug|x64.Build.0 = Debug|x64
28 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Debug|x64.Deploy.0 = Debug|x64
29 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Debug|x86.ActiveCfg = Debug|Win32
30 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Debug|x86.Build.0 = Debug|Win32
31 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Debug|x86.Deploy.0 = Debug|Win32
32 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Release|ARM.ActiveCfg = Release|ARM
33 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Release|ARM.Build.0 = Release|ARM
34 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Release|ARM.Deploy.0 = Release|ARM
35 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Release|ARM64.ActiveCfg = Release|ARM64
36 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Release|ARM64.Build.0 = Release|ARM64
37 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Release|ARM64.Deploy.0 = Release|ARM64
38 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Release|x64.ActiveCfg = Release|x64
39 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Release|x64.Build.0 = Release|x64
40 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Release|x64.Deploy.0 = Release|x64
41 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Release|x86.ActiveCfg = Release|Win32
42 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Release|x86.Build.0 = Release|Win32
43 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}.Release|x86.Deploy.0 = Release|Win32
44 | EndGlobalSection
45 | GlobalSection(SolutionProperties) = preSolution
46 | HideSolutionNode = FALSE
47 | EndGlobalSection
48 | EndGlobal
49 |
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/APIC_IPI_DEMO/APIC_IPI_DEMO.inf:
--------------------------------------------------------------------------------
1 | ;
2 | ; APIC_IPI_DEMO.inf
3 | ;
4 |
5 | [Version]
6 | Signature="$WINDOWS NT$"
7 | Class=Sample
8 | ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171}
9 | Provider=%ManufacturerName%
10 | DriverVer=01/03/2017,17.41.53.254
11 | CatalogFile=APIC_IPI_DEMO.cat
12 |
13 | [DestinationDirs]
14 | DefaultDestDir = 12
15 |
16 |
17 | [SourceDisksNames]
18 | 1 = %DiskName%,,,""
19 |
20 | [SourceDisksFiles]
21 |
22 |
23 | [Manufacturer]
24 | %ManufacturerName%=Standard,NT$ARCH$
25 |
26 | [Standard.NT$ARCH$]
27 |
28 |
29 | [Strings]
30 | ManufacturerName="KelvinChan"
31 | ClassName=""
32 | DiskName="APIC_IPI_DEMO Source Disk"
33 |
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/APIC_IPI_DEMO/APIC_IPI_DEMO.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Release
10 | Win32
11 |
12 |
13 | Debug
14 | x64
15 |
16 |
17 | Release
18 | x64
19 |
20 |
21 | Debug
22 | ARM
23 |
24 |
25 | Release
26 | ARM
27 |
28 |
29 | Debug
30 | ARM64
31 |
32 |
33 | Release
34 | ARM64
35 |
36 |
37 |
38 | {9EEC0D15-E9A6-4EF1-8EB0-6A3947DE3900}
39 | {dd38f7fc-d7bd-488b-9242-7d8754cde80d}
40 | v4.5
41 | 12.0
42 | Debug
43 | Win32
44 | APIC_IPI_DEMO
45 |
46 |
47 |
48 | Windows10
49 | true
50 | WindowsKernelModeDriver10.0
51 | Driver
52 | WDM
53 |
54 |
55 | Windows10
56 | false
57 | WindowsKernelModeDriver10.0
58 | Driver
59 | WDM
60 |
61 |
62 | Windows7
63 | true
64 | WindowsKernelModeDriver10.0
65 | Driver
66 | WDM
67 |
68 |
69 | Windows10
70 | false
71 | WindowsKernelModeDriver10.0
72 | Driver
73 | WDM
74 |
75 |
76 | Windows10
77 | true
78 | WindowsKernelModeDriver10.0
79 | Driver
80 | WDM
81 |
82 |
83 | Windows10
84 | false
85 | WindowsKernelModeDriver10.0
86 | Driver
87 | WDM
88 |
89 |
90 | Windows10
91 | true
92 | WindowsKernelModeDriver10.0
93 | Driver
94 | WDM
95 |
96 |
97 | Windows10
98 | false
99 | WindowsKernelModeDriver10.0
100 | Driver
101 | WDM
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 | DbgengKernelDebugger
113 | true
114 |
115 |
116 | DbgengKernelDebugger
117 |
118 |
119 | DbgengKernelDebugger
120 |
121 |
122 | DbgengKernelDebugger
123 |
124 |
125 | DbgengKernelDebugger
126 |
127 |
128 | DbgengKernelDebugger
129 |
130 |
131 | DbgengKernelDebugger
132 |
133 |
134 | DbgengKernelDebugger
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/APIC_IPI_DEMO/APIC_IPI_DEMO.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 | {8E41214B-6785-4CFE-B992-037D68949A14}
18 | inf;inv;inx;mof;mc;
19 |
20 |
21 |
22 |
23 | Driver Files
24 |
25 |
26 |
27 |
28 | Source Files
29 |
30 |
31 | Header Files
32 |
33 |
34 | Source Files
35 |
36 |
37 |
38 |
39 | Header Files
40 |
41 |
42 | Header Files
43 |
44 |
45 |
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/APIC_IPI_DEMO/APIC_IPI_DEMO.vcxproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/APIC_IPI_DEMO/Driver.cpp:
--------------------------------------------------------------------------------
1 | extern "C"
2 | {
3 | #include
4 | #include "PauseCPU.h"
5 | #include "Util.h"
6 |
7 | //-----------------------------------------------------------------------------------------
8 | VOID DriverUnload(
9 | _In_ struct _DRIVER_OBJECT *DriverObject
10 | )
11 | {
12 | UNREFERENCED_PARAMETER(DriverObject);
13 | APIC_IPI_DEBUG_INFO("Unloaded Driver");
14 | }
15 |
16 | //---------------------------------------------------------------------------------------------------------------
17 | _IRQL_requires_min_(IPI_LEVEL) ULONG __stdcall TestDemo(
18 | PVOID params
19 | )
20 | {
21 | UNREFERENCED_PARAMETER(params);
22 |
23 | int i = 0;
24 | while (i < 10)
25 | {
26 | APIC_IPI_DEBUG_INFO("We dun Suspend Id: %x i: %d \r\n", KeGetCurrentProcessorNumberEx(nullptr), i);
27 | i++;
28 | }
29 | return 0;
30 | }
31 |
32 | //-----------------------------------------------------------------------------------------
33 | NTSTATUS DriverEntry(
34 | PDRIVER_OBJECT driver_object,
35 | PUNICODE_STRING unicode
36 | )
37 | {
38 | NTSTATUS status = STATUS_SUCCESS;
39 | UNREFERENCED_PARAMETER(unicode);
40 |
41 | driver_object->DriverUnload = DriverUnload;
42 |
43 | APIC_IPI_COMMON_DBG_BREAK();
44 |
45 | InitSyncProcedure(TestDemo);
46 |
47 | return status;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/APIC_IPI_DEMO/PauseCPU.cpp:
--------------------------------------------------------------------------------
1 | extern "C"
2 | {
3 | #include "Util.h"
4 | #include "PauseCPU.h"
5 |
6 | //-----------------------------------------------------------------------------------------
7 | ULONG_PTR BroadCaster(
8 | _In_ ULONG_PTR Argument
9 | )
10 | {
11 | MCONTEXT* context = (MCONTEXT*)Argument;
12 |
13 | //other CPU
14 | if (KeGetCurrentProcessorNumberEx(nullptr) != context->ProcessorId)
15 | {
16 | APIC_IPI_DEBUG_INFO("Core: %d is Waiting... \r\n", KeGetCurrentProcessorNumberEx(nullptr));
17 |
18 | InterlockedDecrement(&context->RunningProcessor);
19 |
20 | while (context->Done == FALSE)
21 | {
22 | YieldProcessor();
23 | }
24 |
25 | InterlockedDecrement(&context->ProcessorsToResume);
26 |
27 | APIC_IPI_DEBUG_INFO("Core %d is Resuming... \r\n", KeGetCurrentProcessorNumberEx(nullptr));
28 |
29 | }
30 | //current CPU (a CPU we want it works)
31 | else
32 | {
33 | while (context->RunningProcessor != 0)
34 | {
35 | YieldProcessor();
36 | }
37 |
38 | APIC_IPI_DEBUG_INFO("----- start sync jobs by Core: %d ----- \r\n", KeGetCurrentProcessorNumberEx(nullptr));
39 | if (context->callback)
40 | {
41 | context->callback(context->Params);
42 | }
43 | APIC_IPI_DEBUG_INFO("--------- finshed by Core: %d --------- \r\n", KeGetCurrentProcessorNumberEx(nullptr));
44 |
45 | context->Done = TRUE;
46 |
47 | while (context->ProcessorsToResume != 0)
48 | {
49 | YieldProcessor();
50 | }
51 | }
52 | return 0;
53 | }
54 |
55 | //---------------------------------------------------------------------------------------------------------------
56 | VOID InitSyncProcedure(
57 | CALLBACK TestDemo
58 | )
59 | {
60 | MCONTEXT* context = (MCONTEXT*)ExAllocatePool(NonPagedPool, PAGE_SIZE);
61 | context->ProcessorId = KeGetCurrentProcessorNumberEx(nullptr);
62 | context->RunningProcessor = KeNumberProcessors - 1;
63 | context->ProcessorsToResume = KeNumberProcessors - 1;
64 | context->callback = TestDemo;
65 | context->Params = NULL;
66 | context->Done = FALSE;
67 |
68 | if (KeNumberProcessors > 1)
69 | {
70 | //Send APIC IPI signal processors
71 | KeIpiGenericCall(BroadCaster, (ULONG_PTR)context);
72 | }
73 | else
74 | {
75 | context->callback(context->Params);
76 | }
77 |
78 | ExFreePool(context);
79 | }
80 | }
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/APIC_IPI_DEMO/PauseCPU.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 | typedef ULONG (_IRQL_requires_min_(IPI_LEVEL) __stdcall *CALLBACK)(PVOID);
5 |
6 | #pragma pack(8)
7 | typedef struct MCONTEXT
8 | {
9 | ULONG ProcessorId;
10 | volatile LONG RunningProcessor;
11 | volatile LONG ProcessorsToResume;
12 | ULONG Done;
13 | CALLBACK callback;
14 | PVOID Params;
15 | }MCONTEXT, *PMCONTEXT;
16 | #pragma pack()
17 |
18 | VOID InitSyncProcedure(CALLBACK callback);
19 |
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/APIC_IPI_DEMO/Util.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KelvinMsft/SyncJobs_MPSystem/b25175f0029488edc55f04d53f3907eb97dda489/APIC_IPI_DEMO/APIC_IPI_DEMO/Util.cpp
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/APIC_IPI_DEMO/Util.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | /// Sets a break point that works only when a debugger is present
4 | #if !defined(APIC_IPI_COMMON_DBG_BREAK)
5 | #define APIC_IPI_COMMON_DBG_BREAK() \
6 | if (KD_DEBUGGER_NOT_PRESENT) { \
7 | } else { \
8 | __debugbreak(); \
9 | } \
10 | reinterpret_cast(0)
11 | #endif
12 |
13 | #define APIC_IPI_DEBUG_INFO(format, ...) DbgPrintEx(0,0,format,__VA_ARGS__)
14 |
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/APIC_IPI_DEMO/x64/Debug/APIC_IPI_DEMO.inf:
--------------------------------------------------------------------------------
1 | ;
2 | ; APIC_IPI_DEMO.inf
3 | ;
4 |
5 | [Version]
6 | Signature="$WINDOWS NT$"
7 | Class=Sample
8 | ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171}
9 | Provider=%ManufacturerName%
10 | DriverVer=01/13/2017,12.4.20.367
11 | CatalogFile=APIC_IPI_DEMO.cat
12 |
13 | [DestinationDirs]
14 | DefaultDestDir = 12
15 |
16 |
17 | [SourceDisksNames]
18 | 1 = %DiskName%,,,""
19 |
20 | [SourceDisksFiles]
21 |
22 |
23 | [Manufacturer]
24 | %ManufacturerName%=Standard,NTamd64
25 |
26 | [Standard.NTamd64]
27 |
28 |
29 | [Strings]
30 | ManufacturerName="KelvinChan"
31 | ClassName=""
32 | DiskName="APIC_IPI_DEMO Source Disk"
33 |
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/x64/Debug/APIC_IPI_DEMO.cer:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KelvinMsft/SyncJobs_MPSystem/b25175f0029488edc55f04d53f3907eb97dda489/APIC_IPI_DEMO/x64/Debug/APIC_IPI_DEMO.cer
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/x64/Debug/APIC_IPI_DEMO.inf:
--------------------------------------------------------------------------------
1 | ;
2 | ; APIC_IPI_DEMO.inf
3 | ;
4 |
5 | [Version]
6 | Signature="$WINDOWS NT$"
7 | Class=Sample
8 | ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171}
9 | Provider=%ManufacturerName%
10 | DriverVer=01/13/2017,12.4.20.367
11 | CatalogFile=APIC_IPI_DEMO.cat
12 |
13 | [DestinationDirs]
14 | DefaultDestDir = 12
15 |
16 |
17 | [SourceDisksNames]
18 | 1 = %DiskName%,,,""
19 |
20 | [SourceDisksFiles]
21 |
22 |
23 | [Manufacturer]
24 | %ManufacturerName%=Standard,NTamd64
25 |
26 | [Standard.NTamd64]
27 |
28 |
29 | [Strings]
30 | ManufacturerName="KelvinChan"
31 | ClassName=""
32 | DiskName="APIC_IPI_DEMO Source Disk"
33 |
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/x64/Debug/APIC_IPI_DEMO.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KelvinMsft/SyncJobs_MPSystem/b25175f0029488edc55f04d53f3907eb97dda489/APIC_IPI_DEMO/x64/Debug/APIC_IPI_DEMO.pdb
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/x64/Debug/APIC_IPI_DEMO.sys:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KelvinMsft/SyncJobs_MPSystem/b25175f0029488edc55f04d53f3907eb97dda489/APIC_IPI_DEMO/x64/Debug/APIC_IPI_DEMO.sys
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/x64/Debug/APIC_IPI_DEMO/APIC_IPI_DEMO.inf:
--------------------------------------------------------------------------------
1 | ;
2 | ; APIC_IPI_DEMO.inf
3 | ;
4 |
5 | [Version]
6 | Signature="$WINDOWS NT$"
7 | Class=Sample
8 | ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171}
9 | Provider=%ManufacturerName%
10 | DriverVer=01/13/2017,12.4.20.367
11 | CatalogFile=APIC_IPI_DEMO.cat
12 |
13 | [DestinationDirs]
14 | DefaultDestDir = 12
15 |
16 |
17 | [SourceDisksNames]
18 | 1 = %DiskName%,,,""
19 |
20 | [SourceDisksFiles]
21 |
22 |
23 | [Manufacturer]
24 | %ManufacturerName%=Standard,NTamd64
25 |
26 | [Standard.NTamd64]
27 |
28 |
29 | [Strings]
30 | ManufacturerName="KelvinChan"
31 | ClassName=""
32 | DiskName="APIC_IPI_DEMO Source Disk"
33 |
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/x64/Debug/APIC_IPI_DEMO/APIC_IPI_DEMO.sys:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KelvinMsft/SyncJobs_MPSystem/b25175f0029488edc55f04d53f3907eb97dda489/APIC_IPI_DEMO/x64/Debug/APIC_IPI_DEMO/APIC_IPI_DEMO.sys
--------------------------------------------------------------------------------
/APIC_IPI_DEMO/x64/Debug/APIC_IPI_DEMO/apic_ipi_demo.cat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KelvinMsft/SyncJobs_MPSystem/b25175f0029488edc55f04d53f3907eb97dda489/APIC_IPI_DEMO/x64/Debug/APIC_IPI_DEMO/apic_ipi_demo.cat
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # SyncJobs
2 |
3 | A Demo for the synchronization of Multi-Processor System by using APIC its IPI (Inter-Processor Interrupt)
4 |
5 |
6 |
7 | # Expected Result :
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------