Changeset 105377 in vbox for trunk/src/VBox/Additions
- Timestamp:
- Jul 17, 2024 2:06:05 PM (7 months ago)
- svn:sync-xref-src-repo-rev:
- 164030
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlProcess.cpp
r105353 r105377 70 70 static DECLCALLBACK(int) vgsvcGstCtrlProcessOnOutput(PVBOXSERVICECTRLPROCESS pThis, const PVBGLR3GUESTCTRLCMDCTX pHostCtx, 71 71 uint32_t uHandle, uint32_t cbToRead, uint32_t uFlags); 72 static int vgsvcGstCtrlProcessRequestExV(PVBOXSERVICECTRLPROCESS pProcess, bool fAsync, RTMSINTERVAL cMsTimeout, 73 PFNRT pfnFunction, unsigned cArgs, 74 va_list Args) RT_IPRT_CALLREQ_ATTR(4, 5, 0); /* attrib req prototype */ 75 static int vgsvcGstCtrlProcessRequestAsync(PVBOXSERVICECTRLPROCESS pProcess, PFNRT pfnFunction, 76 unsigned cArgs, ...) RT_IPRT_CALLREQ_ATTR(2, 3, 4); /* ditto */ 77 #if 0 /* unused */ 78 static int vgsvcGstCtrlProcessRequestWait(PVBOXSERVICECTRLPROCESS pProcess, RTMSINTERVAL cMsTimeout, 79 PFNRT pfnFunction, unsigned cArgs, ...) RT_IPRT_CALLREQ_ATTR(3, 4, 5); 80 #endif 72 81 73 82 … … 2082 2091 2083 2092 2084 static int vgsvcGstCtrlProcessRequestExV(PVBOXSERVICECTRLPROCESS pProcess, const PVBGLR3GUESTCTRLCMDCTX pHostCtx, 2085 bool fAsync, RTMSINTERVAL uTimeoutMS, 2086 PFNRT pfnFunction, unsigned cArgs, va_list Args) RT_IPRT_CALL_ATTR(5, 6, 0) 2087 { 2088 RT_NOREF1(pHostCtx); 2093 static int vgsvcGstCtrlProcessRequestExV(PVBOXSERVICECTRLPROCESS pProcess, bool fAsync, RTMSINTERVAL cMsTimeout, 2094 PFNRT pfnFunction, unsigned cArgs, va_list Args) 2095 { 2089 2096 AssertPtrReturn(pProcess, VERR_INVALID_POINTER); 2090 /* pHostCtx is optional. */2091 2097 AssertPtrReturn(pfnFunction, VERR_INVALID_POINTER); 2092 2098 if (!fAsync) … … 2097 2103 { 2098 2104 #ifdef DEBUG 2099 VGSvcVerbose(3, "[PID %RU32]: vgsvcGstCtrlProcessRequestExV fAsync=%RTbool, uTimeoutMS=%RU32, cArgs=%u\n",2100 pProcess->uPID, fAsync, uTimeoutMS, cArgs);2105 VGSvcVerbose(3, "[PID %RU32]: vgsvcGstCtrlProcessRequestExV fAsync=%RTbool, cMsTimeout=%RU32, cArgs=%u\n", 2106 pProcess->uPID, fAsync, cMsTimeout, cArgs); 2101 2107 #endif 2102 2108 uint32_t fFlags = RTREQFLAGS_IPRT_STATUS; 2103 2109 if (fAsync) 2104 2110 { 2105 Assert( uTimeoutMS== 0);2111 Assert(cMsTimeout == 0); 2106 2112 fFlags |= RTREQFLAGS_NO_WAIT; 2107 2113 } 2108 2114 2109 2115 PRTREQ hReq = NIL_RTREQ; 2110 rc = RTReqQueueCallV(pProcess->hReqQueue, &hReq, uTimeoutMS, fFlags, pfnFunction, cArgs, Args);2116 rc = RTReqQueueCallV(pProcess->hReqQueue, &hReq, cMsTimeout, fFlags, pfnFunction, cArgs, Args); 2111 2117 RTReqRelease(hReq); 2112 2118 if (RT_SUCCESS(rc)) … … 2143 2149 2144 2150 2145 static int vgsvcGstCtrlProcessRequestAsync(PVBOXSERVICECTRLPROCESS pProcess, const PVBGLR3GUESTCTRLCMDCTX pHostCtx, 2146 PFNRT pfnFunction, unsigned cArgs, ...) RT_IPRT_CALL_ATTR(3, 4, 5) 2151 static int vgsvcGstCtrlProcessRequestAsync(PVBOXSERVICECTRLPROCESS pProcess, PFNRT pfnFunction, unsigned cArgs, ...) 2152 { 2153 AssertPtrReturn(pProcess, VERR_INVALID_POINTER); 2154 AssertPtrReturn(pfnFunction, VERR_INVALID_POINTER); 2155 2156 va_list va; 2157 va_start(va, cArgs); 2158 int rc = vgsvcGstCtrlProcessRequestExV(pProcess, true /* fAsync */, 0 /* cMsTimeout */, 2159 pfnFunction, cArgs, va); 2160 va_end(va); 2161 2162 return rc; 2163 } 2164 2165 2166 #if 0 /* unused */ 2167 static int vgsvcGstCtrlProcessRequestWait(PVBOXSERVICECTRLPROCESS pProcess, RTMSINTERVAL cMsTimeout, 2168 PFNRT pfnFunction, unsigned cArgs, ...) 2147 2169 { 2148 2170 AssertPtrReturn(pProcess, VERR_INVALID_POINTER); … … 2152 2174 va_list va; 2153 2175 va_start(va, cArgs); 2154 int rc = vgsvcGstCtrlProcessRequestExV(pProcess, pHostCtx, true /* fAsync */, 0 /* uTimeoutMS */,2176 int rc = vgsvcGstCtrlProcessRequestExV(pProcess, false /* fAsync */, cMsTimeout, 2155 2177 pfnFunction, cArgs, va); 2156 2178 va_end(va); … … 2158 2180 return rc; 2159 2181 } 2160 2161 2162 #if 0 /* unused */2163 static int vgsvcGstCtrlProcessRequestWait(PVBOXSERVICECTRLPROCESS pProcess, const PVBGLR3GUESTCTRLCMDCTX pHostCtx,2164 RTMSINTERVAL uTimeoutMS, PFNRT pfnFunction, unsigned cArgs, ...)2165 {2166 AssertPtrReturn(pProcess, VERR_INVALID_POINTER);2167 /* pHostCtx is optional. */2168 AssertPtrReturn(pfnFunction, VERR_INVALID_POINTER);2169 2170 va_list va;2171 va_start(va, cArgs);2172 int rc = vgsvcGstCtrlProcessRequestExV(pProcess, pHostCtx, false /* fAsync */, uTimeoutMS,2173 pfnFunction, cArgs, va);2174 va_end(va);2175 2176 return rc;2177 }2178 2182 #endif 2179 2183 … … 2183 2187 { 2184 2188 if (!ASMAtomicReadBool(&pProcess->fShutdown) && !ASMAtomicReadBool(&pProcess->fStopped)) 2185 return vgsvcGstCtrlProcessRequestAsync(pProcess, pHostCtx,(PFNRT)vgsvcGstCtrlProcessOnInput, 5 /*cArgs*/,2189 return vgsvcGstCtrlProcessRequestAsync(pProcess, (PFNRT)vgsvcGstCtrlProcessOnInput, 5 /*cArgs*/, 2186 2190 pProcess, pHostCtx, fPendingClose, pvBuf, cbBuf); 2187 2191 … … 2194 2198 { 2195 2199 if (!ASMAtomicReadBool(&pProcess->fShutdown) && !ASMAtomicReadBool(&pProcess->fStopped)) 2196 return vgsvcGstCtrlProcessRequestAsync(pProcess, pHostCtx,(PFNRT)vgsvcGstCtrlProcessOnOutput, 5 /*cArgs*/,2200 return vgsvcGstCtrlProcessRequestAsync(pProcess, (PFNRT)vgsvcGstCtrlProcessOnOutput, 5 /*cArgs*/, 2197 2201 pProcess, pHostCtx, uHandle, cbToRead, fFlags); 2198 2202 … … 2204 2208 { 2205 2209 if (!ASMAtomicReadBool(&pProcess->fShutdown) && !ASMAtomicReadBool(&pProcess->fStopped)) 2206 return vgsvcGstCtrlProcessRequestAsync(pProcess, NULL /* pHostCtx */, (PFNRT)vgsvcGstCtrlProcessOnTerm, 1 /*cArgs*/, 2207 pProcess); 2210 return vgsvcGstCtrlProcessRequestAsync(pProcess, (PFNRT)vgsvcGstCtrlProcessOnTerm, 1 /*cArgs*/, pProcess); 2208 2211 2209 2212 return vgsvcGstCtrlProcessOnTerm(pProcess);
Note:
See TracChangeset
for help on using the changeset viewer.