ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
January 2010
----- 2024 -----
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
26 participants
522 discussions
Start a n
N
ew thread
[sserapion] 45246: Forgot to svn add spec file.
by sserapion@svn.reactos.org
Author: sserapion Date: Mon Jan 25 12:19:50 2010 New Revision: 45246 URL:
http://svn.reactos.org/svn/reactos?rev=45246&view=rev
Log: Forgot to svn add spec file. Added: branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt.spec (with props) Removed: branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt-amd64.def branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt-i386.def Removed: branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt-amd64.def URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/dll/w…
============================================================================== --- branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt-amd64.def [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt-amd64.def (removed) @@ -1,860 +1,0 @@ -; -; ReactOS MSVCRT Library -; -LIBRARY msvcrt.dll - -EXPORTS - $I10_OUTPUT=MSVCRT_I10_OUTPUT @57 - ??0__non_rtti_object@@QAE@ABV0@@Z=MSVCRT___non_rtti_object_copy_ctor @1 - ??0__non_rtti_object@@QAE@PBD@Z=MSVCRT___non_rtti_object_ctor @2 -; ??0bad_cast@@AAE@PBQBD@Z @3 - ??0bad_cast@@QAE@ABQBD@Z=MSVCRT_bad_cast_ctor @4 - ??0bad_cast@@QAE@ABV0@@Z=MSVCRT_bad_cast_copy_ctor @5 -; ??0bad_cast@@QAE@PBD@Z @6 - ??0bad_typeid@@QAE@ABV0@@Z=MSVCRT_bad_typeid_copy_ctor @7 - ??0bad_typeid@@QAE@PBD@Z=MSVCRT_bad_typeid_ctor @8 - ??0exception@@QAE@ABQBD@Z=MSVCRT_exception_ctor @9 -; ??0exception@@QAE@ABQBDH@Z @10 - ??0exception@@QAE@ABV0@@Z=MSVCRT_exception_copy_ctor @11 - ??0exception@@QAE@XZ=MSVCRT_exception_default_ctor @12 - ??1__non_rtti_object@@UAE@XZ=MSVCRT___non_rtti_object_dtor @13 - ??1bad_cast@@UAE@XZ=MSVCRT_bad_cast_dtor @14 - ??1bad_typeid@@UAE@XZ=MSVCRT_bad_typeid_dtor @15 - ??1exception@@UAE@XZ=MSVCRT_exception_dtor @16 - ??1type_info@@UAE@XZ=MSVCRT_type_info_dtor @17 - ??2@YAPAXI@Z=MSVCRT_operator_new @18 - ??3@YAXPAX@Z=MSVCRT_operator_delete @19 - ??4__non_rtti_object@@QAEAAV0@ABV0@@Z=MSVCRT___non_rtti_object_opequals @20 - ??4bad_cast@@QAEAAV0@ABV0@@Z=MSVCRT_bad_cast_opequals @21 - ??4bad_typeid@@QAEAAV0@ABV0@@Z=MSVCRT_bad_typeid_opequals @22 - ??4exception@@QAEAAV0@ABV0@@Z=MSVCRT_exception_opequals @23 - ??8type_info@@QBEHABV0@@Z=MSVCRT_type_info_opequals_equals @24 - ??9type_info@@QBEHABV0@@Z=MSVCRT_type_info_opnot_equals @25 - ??_7__non_rtti_object@@6B@=MSVCRT___non_rtti_object_vtable@@6B@ @26 DATA - ??_7bad_cast@@6B@=MSVCRT_bad_cast_vtable @27 DATA - ??_7bad_typeid@@6B@=MSVCRT_bad_typeid_vtable @28 DATA - ??_7exception@@6B@=MSVCRT_exception_vtable @29 DATA - ??_E__non_rtti_object@@UAEPAXI@Z=MSVCRT___non_rtti_object_vector_dtor @30 - ??_Ebad_cast@@UAEPAXI@Z=MSVCRT_bad_cast_vector_dtor @31 - ??_Ebad_typeid@@UAEPAXI@Z=MSVCRT_bad_typeid_vector_dtor @32 - ??_Eexception@@UAEPAXI@Z=MSVCRT_exception_vector_dtor @33 -; ??_Fbad_cast@@QAEXXZ @34 -; ??_Fbad_typeid@@QAEXXZ @35 - ??_G__non_rtti_object@@UAEPAXI@Z=MSVCRT___non_rtti_object_scalar_dtor @36 - ??_Gbad_cast@@UAEPAXI@Z=MSVCRT_bad_cast_scalar_dtor @37 - ??_Gbad_typeid@@UAEPAXI@Z=MSVCRT_bad_typeid_scalar_dtor @38 - ??_Gexception@@UAEPAXI@Z=MSVCRT_exception_scalar_dtor @39 - ??_U@YAPAXI@Z=MSVCRT_operator_new @40 - ??_V@YAXPAX@Z=MSVCRT_operator_delete @41 - ?_query_new_handler@@YAP6AHI@ZXZ=MSVCRT__query_new_handler @43 - ?_query_new_mode@@YAHXZ=MSVCRT__query_new_mode @44 - ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z=MSVCRT__set_new_handler @45 - ?_set_new_mode@@YAHH@Z=MSVCRT__set_new_mode @46 - ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z=MSVCRT__set_se_translator @47 - ?before@type_info@@QBEHABV1@@Z=MSVCRT_type_info_before @48 - ?name@type_info@@QBEPBDXZ=MSVCRT_type_info_name @49 - ?raw_name@type_info@@QBEPBDXZ=MSVCRT_type_info_raw_name @50 - ?set_new_handler@@YAP6AXXZP6AXXZ@Z=MSVCRT__set_new_handler @51 - ?set_terminate@@YAP6AXXZP6AXXZ@Z=MSVCRT_set_terminate @52 - ?set_unexpected@@YAP6AXXZP6AXXZ@Z=MSVCRT_set_unexpected @53 - ?terminate@@YAXXZ=MSVCRT_terminate @54 - ?unexpected@@YAXXZ=MSVCRT_unexpected @55 - ?what@exception@@UBEPBDXZ=MSVCRT_what_exception @56 - _CIacos @58 - _CIasin @59 - _CIatan @60 - _CIatan2 @61 - _CIcos @62 - _CIcosh @63 - _CIexp @64 - _CIfmod @65 - _CIlog @66 - _CIlog10 @67 - _CIpow @68 - _CIsin @69 - _CIsinh @70 - _CIsqrt @71 - _CItan @72 - _CItanh @73 - _CxxThrowException @74 -; _EH_prolog @75 ??? - _Getdays @76 - _Getmonths @77 - _Gettnames @78 - _HUGE @79 DATA - _Strftime @80 - _XcptFilter @81 - __CppXcptFilter @82 -; __CxxCallUnwindDtor @83 -; __CxxCallUnwindVecDtor @84 - __CxxDetectRethrow @85 -; __CxxExceptionFilter @86 -; __CxxFrameHandler @87 ??? -; __CxxFrameHandler2 @88 -; __CxxLongjmpUnwind @89 ??? - __CxxQueryExceptionSize @90 -; __CxxRegisterExceptionObject @91 -; __CxxUnregisterExceptionObject @92 -; __DestructExceptionObject @93 - __RTCastToVoid=MSVCRT___RTCastToVoid @94 - __RTDynamicCast=MSVCRT___RTDynamicCast @95 - __RTtypeid=MSVCRT___RTtypeid @96 - __STRINGTOLD @97 -; ___lc_codepage_func @98 -; ___lc_collate_cp_func @99 -; ___lc_handle_func @100 -; ___mb_cur_max_func @101 - ___setlc_active_func @102 - ___unguarded_readlc_active_add_func @103 - __argc @104 DATA - __argv @105 DATA - __badioinfo @106 DATA - __crtCompareStringA=kernel32.CompareStringA @107 - __crtCompareStringW=kernel32.CompareStringW @108 - __crtGetLocaleInfoW=kernel32.GetLocaleInfo @109 - __crtGetStringTypeW=kernel32.GetStringTypeW @110 - __crtLCMapStringA @111 -; __crtLCMapStringW @112 - __dllonexit @113 - __doserrno @114 - __fpecode @115 - __getmainargs @116 - __initenv @117 - __iob_func=__p__iob @118 - __isascii @119 - __iscsym @120 - __iscsymf @121 - __lc_codepage @122 DATA - __lc_collate_cp @123 DATA - __lc_handle @124 DATA - __lconv_init @125 - __mb_cur_max @126 DATA - __p___argc @127 - __p___argv @128 - __p___initenv @129 - __p___mb_cur_max @130 - __p___wargv @131 - __p___winitenv @132 - __p__acmdln @133 - __p__amblksiz @134 - __p__commode @135 - __p__daylight @136 - __p__dstbias @137 - __p__environ @138 -; __p__fileinfo @139 - __p__fmode @140 - __p__iob @141 -; __p__mbcasemap @142 - __p__mbctype @143 - __p__osver @144 - __p__pctype @145 - __p__pgmptr @146 - __p__pwctype @147 - __p__timezone @148 - __p__tzname @149 - __p__wcmdln @150 - __p__wenviron @151 - __p__winmajor @152 - __p__winminor @153 - __p__winver @154 - __p__wpgmptr @155 -; __pctype_func @156 - __pioinfo @157 DATA -; __pwctype_func @158 - __pxcptinfoptrs @159 - __set_app_type @160 - __setlc_active @161 DATA - __setusermatherr @162 - __threadhandle @163 - __threadid @164 - __toascii @165 - __unDName @166 - __unDNameEx @167 -; __uncaught_exception @42 - __unguarded_readlc_active @168 DATA - __wargv @169 DATA -; __wcserror @170 - __wgetmainargs @171 - __winitenv @172 DATA - _abnormal_termination @173 -; _abs64 @174 - _access @175 - _acmdln @176 DATA - _adj_fdiv_m16i @177 - _adj_fdiv_m32 @178 - _adj_fdiv_m32i @179 - _adj_fdiv_m64 @180 - _adj_fdiv_r @181 - _adj_fdivr_m16i @182 - _adj_fdivr_m32 @183 - _adj_fdivr_m32i @184 - _adj_fdivr_m64 @185 - _adj_fpatan @186 - _adj_fprem @187 - _adj_fprem1 @188 - _adj_fptan @189 - _adjust_fdiv @190 DATA - _aexit_rtn @191 - _aligned_free @192 - _aligned_malloc @193 - _aligned_offset_malloc @194 - _aligned_offset_realloc @195 - _aligned_realloc @196 - _amsg_exit @197 - _assert @198 -; _atodbl @199 - _atoi64 @200 - _atoldbl @201 - _beep @202 - _beginthread @203 - _beginthreadex @204 - _c_exit @205 - _cabs @206 - _callnewh @207 - _cexit @208 - _cgets @209 -; _cgetws @210 - _chdir @211 - _chdrive @212 - _chgsign @213 - _chkesp @214 - _chmod @215 - _chsize @216 - _clearfp @217 - _close @218 - _commit @219 - _commode @220 DATA - _control87 @221 - _controlfp @222 - _copysign @223 - _cprintf @224 - _cputs @225 -; _cputws @226 - _creat @227 - _cscanf @228 - _ctime64 @229 - _ctype @230 DATA - _cwait @231 -; _cwprintf @232 -; _cwscanf @233 - _daylight @234 DATA - _dstbias @235 DATA - _dup @236 - _dup2 @237 - _ecvt @238 - _endthread @239 - _endthreadex @240 - _environ @241 DATA - _eof @242 - _errno @243 - _except_handler2 @244 - _except_handler3 @245 - _execl @246 - _execle @247 - _execlp @248 - _execlpe @249 - _execv @250 - _execve @251 - _execvp @252 - _execvpe @253 - _exit @254 - _expand @255 - _fcloseall @256 - _fcvt @257 - _fdopen @258 - _fgetchar @259 - _fgetwchar @260 - _filbuf @261 -; _fileinfo @262 - _filelength @263 - _filelengthi64 @264 - _fileno @265 - _findclose @266 - _findfirst @267 - _findfirst64 @268 - _findfirsti64 @269 - _findnext @270 - _findnext64 @271 - _findnexti64 @272 - _finite @273 - _flsbuf @274 - _flushall @275 - _fmode @276 DATA - _fpclass @277 - _fpieee_flt @278 - _fpreset @279 - _fputchar @280 - _fputwchar @281 - _fsopen @282 - _fstat @283 - _fstat64 @284 - _fstati64 @285 - _ftime @286 - _ftime64 @287 -; _ftol @288 ??? - _fullpath @289 - _futime @290 - _futime64 @291 - _gcvt @292 -; _get_heap_handle @293 - _get_osfhandle @294 - _get_sbh_threshold @295 - _getch @296 - _getche @297 - _getcwd @298 - _getdcwd @299 - _getdiskfree @300 - _getdllprocaddr @301 - _getdrive @302 - _getdrives=kernel32.GetLogicalDrives @303 - _getmaxstdio @304 - _getmbcp @305 - _getpid=kernel32.GetCurrentProcessId @306 - _getsystime @307 - _getw @308 -; _getwch @309 -; _getwche @310 - _getws @311 - _global_unwind2 @312 - _gmtime64=gmtime @313 - _heapadd @314 - _heapchk @315 - _heapmin @316 - _heapset @317 -; _heapused @318 - _heapwalk @319 - _hypot @320 - _i64toa @321 - _i64tow @322 - _initterm @323 -; _inp @324 -; _inpd @325 -; _inpw @326 - _iob @327 DATA - _isatty @328 - _isctype @329 - _ismbbalnum @330 - _ismbbalpha @331 - _ismbbgraph @332 - _ismbbkalnum @333 - _ismbbkana @334 -; _ismbbkprint @335 - _ismbbkpunct @336 - _ismbblead @337 - _ismbbprint @338 - _ismbbpunct @339 - _ismbbtrail @340 - _ismbcalnum @341 - _ismbcalpha @342 - _ismbcdigit @343 - _ismbcgraph @344 - _ismbchira @345 - _ismbckata @346 - _ismbcl0 @347 - _ismbcl1 @348 - _ismbcl2 @349 - _ismbclegal @350 - _ismbclower @351 - _ismbcprint @352 - _ismbcpunct @353 - _ismbcspace @354 - _ismbcsymbol @355 - _ismbcupper @356 - _ismbslead @357 - _ismbstrail @358 - _isnan @359 - _itoa @360 - _itow @361 -; FIXME: these aren't actually implemented in CRT -; _j0 @362 -; _j1 @363 -; _jn @364 - _kbhit @365 - _lfind @366 - _loaddll @367 - _local_unwind2 @368 - _localtime64 @369 - _lock @370 - _locking @371 - _logb @372 - _longjmpex=longjmp @373 - _lrotl @374 - _lrotr @375 - _lsearch @376 - _lseek @377 - _lseeki64 @378 - _ltoa @379 - _ltow @380 - _makepath @381 - _mbbtombc @382 - _mbbtype @383 -; _mbcasemap @384 - _mbccpy @385 - _mbcjistojms @386 - _mbcjmstojis @387 - _mbclen @388 - _mbctohira @389 - _mbctokata @390 - _mbctolower @391 - _mbctombb @392 - _mbctoupper @393 - _mbctype @394 DATA - _mbsbtype @395 - _mbscat @396 - _mbschr @397 - _mbscmp @398 - _mbscoll @399 - _mbscpy @400 - _mbscspn @401 - _mbsdec @402 - _mbsdup @403 - _mbsicmp @404 - _mbsicoll @405 - _mbsinc @406 - _mbslen @407 - _mbslwr @408 - _mbsnbcat @409 - _mbsnbcmp @410 - _mbsnbcnt @411 - _mbsnbcoll @412 - _mbsnbcpy @413 - _mbsnbicmp @414 - _mbsnbicoll @415 - _mbsnbset @416 - _mbsncat @417 - _mbsnccnt @418 - _mbsncmp @419 - _mbsncoll @420 - _mbsncpy @421 - _mbsnextc @422 - _mbsnicmp @423 - _mbsnicoll @424 - _mbsninc @425 - _mbsnset @426 - _mbspbrk @427 - _mbsrchr @428 - _mbsrev @429 - _mbsset @430 - _mbsspn @431 - _mbsspnp @432 - _mbsstr @433 - _mbstok @434 - _mbstrlen @435 - _mbsupr @436 - _memccpy @437 - _memicmp @438 - _mkdir @439 - _mkgmtime @440 - _mkgmtime64 @441 - _mktemp @442 - _mktime64 @443 - _msize @444 - _nextafter @445 - _onexit @446 - _open @447 - _open_osfhandle @448 -; _osplatform @449 - _osver @450 DATA -; _outp @451 -; _outpd @452 -; _outpw @453 - _pclose @454 - _pctype @455 DATA - _pgmptr @456 DATA - _pipe @457 - _popen @458 - _purecall @459 - _putch @460 - _putenv @461 - _putw @462 -; _putwch @463 - _putws @464 - _pwctype @465 - _read @466 -; _resetstkoflw @467 - _rmdir @468 - _rmtmp @469 - _rotl @470 -; _rotl64 @471 - _rotr @472 -; _rotr64 @473 - _safe_fdiv @474 - _safe_fdivr @475 - _safe_fprem @476 - _safe_fprem1 @477 - _scalb @478 -; _scprintf @479 -; _scwprintf @480 - _searchenv @481 -; _seh_longjmp_unwind @482 ??? -; _set_SSE2_enable @483 - _set_error_mode @484 - _set_sbh_threshold @485 - _seterrormode @486 - _setjmp @487 - _setjmpex @488 - _setmaxstdio @489 - _setmbcp @490 - _setmode @491 - _setsystime @492 - _sleep @493 - _snprintf @494 -; _snscanf @495 - _snwprintf @496 -; _snwscanf @497 - _sopen @498 - _spawnl @499 - _spawnle @500 - _spawnlp @501 - _spawnlpe @502 - _spawnv @503 - _spawnve @504 - _spawnvp @505 - _spawnvpe @506 - _splitpath @507 - _stat @508 - _stat64 @509 - _stati64 @510 - _statusfp @511 - _strcmpi @512 - _strdate @513 - _strdup @514 - _strerror @515 - _stricmp @516 - _stricoll @517 - _strlwr @518 - _strncoll @519 - _strnicmp @520 - _strnicoll @521 - _strnset @522 - _strrev @523 - _strset @524 - _strtime @525 -; _strtoi64 @526 - _strtoui64=strtoull @527 - _strupr @528 - _swab @529 - _sys_errlist @530 DATA - _sys_nerr @531 DATA - _tell @532 - _telli64 @533 - _tempnam @534 - _time64 @535 - _timezone @536 DATA - _tolower @537 - _toupper @538 - _tzname @539 DATA - _tzset @540 - _ui64toa @541 - _ui64tow @542 - _ultoa @543 - _ultow @544 - _umask @545 - _ungetch @546 -; _ungetwch @547 - _unlink @548 - _unloaddll @549 - _unlock @550 - _utime @551 -; _utime64 @552 -; _vscprintf @553 -; _vscwprintf @554 - _vsnprintf @555 - _vsnwprintf @556 - _waccess @557 - _wasctime @558 - _wchdir @559 - _wchmod @560 - _wcmdln @561 - _wcreat @562 - _wcsdup @563 -; _wcserror @564 - _wcsicmp @565 - _wcsicoll @566 - _wcslwr @567 - _wcsncoll @568 - _wcsnicmp @569 - _wcsnicoll @570 - _wcsnset @571 - _wcsrev @572 - _wcsset @573 -; _wcstoi64 @574 -; _wcstoui64 @575 - _wcsupr @576 - _wctime @577 -; _wctime64 @578 -; _wctype @579 - _wenviron @580 DATA - _wexecl @581 - _wexecle @582 - _wexeclp @583 - _wexeclpe @584 - _wexecv @585 - _wexecve @586 - _wexecvp @587 - _wexecvpe @588 - _wfdopen @589 - _wfindfirst @590 -; _wfindfirst64 @591 - _wfindfirsti64 @592 - _wfindnext @593 -; _wfindnext64 @594 - _wfindnexti64 @595 - _wfopen @596 - _wfreopen @597 - _wfsopen @598 - _wfullpath @599 - _wgetcwd @600 - _wgetdcwd @601 - _wgetenv @602 - _winmajor @603 DATA - _winminor @604 DATA - _winver @605 DATA - _wmakepath @606 - _wmkdir @607 - _wmktemp @608 - _wopen @609 - _wperror @610 - _wpgmptr @611 DATA - _wpopen @612 - _wputenv @613 - _wremove @614 - _wrename @615 - _write @616 - _wrmdir @617 - _wsearchenv @618 - _wsetlocale @619 - _wsopen @620 - _wspawnl @621 - _wspawnle @622 - _wspawnlp @623 - _wspawnlpe @624 - _wspawnv @625 - _wspawnve @626 - _wspawnvp @627 - _wspawnvpe @628 - _wsplitpath @629 - _wstat @630 - _wstat64 @631 - _wstati64 @632 - _wstrdate @633 - _wstrtime @634 - _wsystem @635 - _wtempnam @636 - _wtmpnam @637 -; _wtof @638 - _wtoi @639 - _wtoi64 @640 - _wtol @641 - _wunlink @642 - _wutime @643 -; _wutime64 @644 -; FIXME: these aren't actually implemented in CRT -; _y0 @645 -; _y1 @646 -; _yn @647 - abort @648 - abs @649 - acos @650 - asctime @651 - asin @652 - atan @653 - atan2 @654 - atexit @655 - atof @656 - atoi @657 - atol @658 - bsearch @659 - calloc @660 - ceil @661 - clearerr @662 - clock @663 - cos @664 - cosh @665 - ctime @666 - difftime @667 - div @668 - exit @669 - exp @670 - fabs @671 - fclose @672 - feof @673 - ferror @674 - fflush @675 - fgetc @676 - fgetpos @677 - fgets @678 - fgetwc @679 - fgetws @680 - floor @681 - fmod @682 - fopen @683 - fprintf @684 - fputc @685 - fputs @686 - fputwc @687 - fputws @688 - fread @689 - free @690 - freopen @691 - frexp @692 - fscanf @693 - fseek @694 - fsetpos @695 - ftell @696 - fwprintf @697 - fwrite @698 - fwscanf @699 - getc @700 - getchar @701 - getenv @702 - gets @703 - getwc @704 - getwchar @705 - gmtime @706 - is_wctype @707 - isalnum @708 - isalpha @709 - iscntrl @710 - isdigit @711 - isgraph @712 - isleadbyte @713 - islower @714 - isprint @715 - ispunct @716 - isspace @717 - isupper @718 - iswalnum @719 - iswalpha @720 - iswascii @721 - iswcntrl @722 - iswctype @723 - iswdigit @724 - iswgraph @725 - iswlower @726 - iswprint @727 - iswpunct @728 - iswspace @729 - iswupper @730 - iswxdigit @731 - isxdigit @732 - labs @733 - ldexp @734 - ldiv @735 - localeconv @736 -; localtime @737 ??? - log @738 - log10 @739 - longjmp @740 - malloc @741 - mblen @742 - mbstowcs @743 - mbtowc @744 - memchr @745 - memcmp @746 - memcpy=memmove @747 - memmove @748 - memset @749 - mktime @750 - modf @751 - perror @752 - pow @753 - printf @754 - putc @755 - putchar @756 - puts @757 - putwc=fputwc @758 - putwchar=_fputwchar @759 - qsort @760 - raise @761 - rand @762 - realloc @763 - remove @764 - rename @765 - rewind @766 - scanf @767 - setbuf @768 - setlocale @769 - setvbuf @770 - signal @771 - sin @772 - sinh @773 - sprintf @774 - sqrt @775 - srand @776 - sscanf @777 - strcat @778 - strchr @779 - strcmp @780 - strcoll @781 - strcpy @782 - strcspn @783 - strerror @784 - strftime @785 - strlen @786 - strncat @787 - strncmp @788 - strncpy @789 - strpbrk @790 - strrchr @791 - strspn @792 - strstr @793 - strtod @794 - strtok @795 - strtol @796 - strtoul @797 - strxfrm @798 - swprintf @799 - swscanf @800 - system @801 - tan @802 - tanh @803 - time @804 - tmpfile @805 - tmpnam @806 - tolower @807 - toupper @808 - towlower @809 - towupper @810 - ungetc @811 - ungetwc @812 - vfprintf @813 - vfwprintf @814 - vprintf @815 - vsprintf @816 - vswprintf @817 - vwprintf @818 - wcscat @819 - wcschr @820 - wcscmp @821 - wcscoll @822 - wcscpy @823 - wcscspn @824 - wcsftime @825 - wcslen @826 - wcsncat @827 - wcsncmp @828 - wcsncpy @829 - wcspbrk @830 - wcsrchr @831 - wcsspn @832 - wcsstr @833 - wcstod @834 - wcstok @835 - wcstol @836 - wcstombs @837 - wcstoul @838 - wcsxfrm @839 - wctomb @840 - wprintf @841 - wscanf @842 - - _mbsnbcpy_s - wcscpy_s - wcsncpy_s - ;_ftol2=_ftol - ;_ftol2_sse=_ftol - strcat_s - strcpy_s - _swprintf=swprintf - Removed: branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt-i386.def URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/dll/w…
============================================================================== --- branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt-i386.def [iso-8859-1] (original) +++ branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt-i386.def (removed) @@ -1,860 +1,0 @@ -; -; ReactOS MSVCRT Library -; -LIBRARY msvcrt.dll - -EXPORTS - $I10_OUTPUT=MSVCRT_I10_OUTPUT @57 - ??0__non_rtti_object@@QAE@ABV0@@Z=__thiscall_MSVCRT___non_rtti_object_copy_ctor @1 - ??0__non_rtti_object@@QAE@PBD@Z=__thiscall_MSVCRT___non_rtti_object_ctor @2 -; ??0bad_cast@@AAE@PBQBD@Z @3 - ??0bad_cast@@QAE@ABQBD@Z=__thiscall_MSVCRT_bad_cast_ctor @4 - ??0bad_cast@@QAE@ABV0@@Z=__thiscall_MSVCRT_bad_cast_copy_ctor @5 -; ??0bad_cast@@QAE@PBD@Z @6 - ??0bad_typeid@@QAE@ABV0@@Z=__thiscall_MSVCRT_bad_typeid_copy_ctor @7 - ??0bad_typeid@@QAE@PBD@Z=__thiscall_MSVCRT_bad_typeid_ctor @8 - ??0exception@@QAE@ABQBD@Z=__thiscall_MSVCRT_exception_ctor @9 -; ??0exception@@QAE@ABQBDH@Z @10 - ??0exception@@QAE@ABV0@@Z=__thiscall_MSVCRT_exception_copy_ctor @11 - ??0exception@@QAE@XZ=__thiscall_MSVCRT_exception_default_ctor @12 - ??1__non_rtti_object@@UAE@XZ=__thiscall_MSVCRT___non_rtti_object_dtor @13 - ??1bad_cast@@UAE@XZ=__thiscall_MSVCRT_bad_cast_dtor @14 - ??1bad_typeid@@UAE@XZ=__thiscall_MSVCRT_bad_typeid_dtor @15 - ??1exception@@UAE@XZ=__thiscall_MSVCRT_exception_dtor @16 - ??1type_info@@UAE@XZ=__thiscall_MSVCRT_type_info_dtor @17 - ??2@YAPAXI@Z=MSVCRT_operator_new @18 - ??3@YAXPAX@Z=MSVCRT_operator_delete @19 - ??4__non_rtti_object@@QAEAAV0@ABV0@@Z=__thiscall_MSVCRT___non_rtti_object_opequals @20 - ??4bad_cast@@QAEAAV0@ABV0@@Z=__thiscall_MSVCRT_bad_cast_opequals @21 - ??4bad_typeid@@QAEAAV0@ABV0@@Z=__thiscall_MSVCRT_bad_typeid_opequals @22 - ??4exception@@QAEAAV0@ABV0@@Z=__thiscall_MSVCRT_exception_opequals @23 - ??8type_info@@QBEHABV0@@Z=__thiscall_MSVCRT_type_info_opequals_equals @24 - ??9type_info@@QBEHABV0@@Z=__thiscall_MSVCRT_type_info_opnot_equals @25 - ??_7__non_rtti_object@@6B@=MSVCRT___non_rtti_object_vtable@@6B@ @26 DATA - ??_7bad_cast@@6B@=MSVCRT_bad_cast_vtable @27 DATA - ??_7bad_typeid@@6B@=MSVCRT_bad_typeid_vtable @28 DATA - ??_7exception@@6B@=MSVCRT_exception_vtable @29 DATA - ??_E__non_rtti_object@@UAEPAXI@Z=__thiscall_MSVCRT___non_rtti_object_vector_dtor @30 - ??_Ebad_cast@@UAEPAXI@Z=__thiscall_MSVCRT_bad_cast_vector_dtor @31 - ??_Ebad_typeid@@UAEPAXI@Z=__thiscall_MSVCRT_bad_typeid_vector_dtor @32 - ??_Eexception@@UAEPAXI@Z=__thiscall_MSVCRT_exception_vector_dtor @33 -; ??_Fbad_cast@@QAEXXZ @34 -; ??_Fbad_typeid@@QAEXXZ @35 - ??_G__non_rtti_object@@UAEPAXI@Z=__thiscall_MSVCRT___non_rtti_object_scalar_dtor @36 - ??_Gbad_cast@@UAEPAXI@Z=__thiscall_MSVCRT_bad_cast_scalar_dtor @37 - ??_Gbad_typeid@@UAEPAXI@Z=__thiscall_MSVCRT_bad_typeid_scalar_dtor @38 - ??_Gexception@@UAEPAXI@Z=__thiscall_MSVCRT_exception_scalar_dtor @39 - ??_U@YAPAXI@Z=MSVCRT_operator_new @40 - ??_V@YAXPAX@Z=MSVCRT_operator_delete @41 - ?_query_new_handler@@YAP6AHI@ZXZ=MSVCRT__query_new_handler @43 - ?_query_new_mode@@YAHXZ=MSVCRT__query_new_mode @44 - ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z=MSVCRT__set_new_handler @45 - ?_set_new_mode@@YAHH@Z=MSVCRT__set_new_mode @46 - ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z=MSVCRT__set_se_translator @47 - ?before@type_info@@QBEHABV1@@Z=__thiscall_MSVCRT_type_info_before @48 - ?name@type_info@@QBEPBDXZ=__thiscall_MSVCRT_type_info_name @49 - ?raw_name@type_info@@QBEPBDXZ=__thiscall_MSVCRT_type_info_raw_name @50 - ?set_new_handler@@YAP6AXXZP6AXXZ@Z=MSVCRT__set_new_handler @51 - ?set_terminate@@YAP6AXXZP6AXXZ@Z=MSVCRT_set_terminate @52 - ?set_unexpected@@YAP6AXXZP6AXXZ@Z=MSVCRT_set_unexpected @53 - ?terminate@@YAXXZ=MSVCRT_terminate @54 - ?unexpected@@YAXXZ=MSVCRT_unexpected @55 - ?what@exception@@UBEPBDXZ=__thiscall_MSVCRT_what_exception @56 - _CIacos @58 - _CIasin @59 - _CIatan @60 - _CIatan2 @61 - _CIcos @62 - _CIcosh @63 - _CIexp @64 - _CIfmod @65 - _CIlog @66 - _CIlog10 @67 - _CIpow @68 - _CIsin @69 - _CIsinh @70 - _CIsqrt @71 - _CItan @72 - _CItanh @73 - _CxxThrowException @74 - _EH_prolog @75 - _Getdays @76 - _Getmonths @77 - _Gettnames @78 - _HUGE @79 DATA - _Strftime @80 - _XcptFilter @81 - __CppXcptFilter @82 -; __CxxCallUnwindDtor @83 -; __CxxCallUnwindVecDtor @84 - __CxxDetectRethrow @85 -; __CxxExceptionFilter @86 - __CxxFrameHandler @87 -; __CxxFrameHandler2 @88 - __CxxLongjmpUnwind @89 - __CxxQueryExceptionSize @90 -; __CxxRegisterExceptionObject @91 -; __CxxUnregisterExceptionObject @92 -; __DestructExceptionObject @93 - __RTCastToVoid=MSVCRT___RTCastToVoid @94 - __RTDynamicCast=MSVCRT___RTDynamicCast @95 - __RTtypeid=MSVCRT___RTtypeid @96 - __STRINGTOLD @97 -; ___lc_codepage_func @98 -; ___lc_collate_cp_func @99 -; ___lc_handle_func @100 -; ___mb_cur_max_func @101 - ___setlc_active_func @102 - ___unguarded_readlc_active_add_func @103 - __argc @104 DATA - __argv @105 DATA - __badioinfo @106 DATA - __crtCompareStringA=kernel32.CompareStringA @107 - __crtCompareStringW=kernel32.CompareStringW @108 - __crtGetLocaleInfoW=kernel32.GetLocaleInfo @109 - __crtGetStringTypeW=kernel32.GetStringTypeW @110 - __crtLCMapStringA @111 -; __crtLCMapStringW @112 - __dllonexit @113 - __doserrno @114 - __fpecode @115 - __getmainargs @116 - __initenv @117 - __iob_func=__p__iob @118 - __isascii @119 - __iscsym @120 - __iscsymf @121 - __lc_codepage @122 DATA - __lc_collate_cp @123 DATA - __lc_handle @124 DATA - __lconv_init @125 - __mb_cur_max @126 DATA - __p___argc @127 - __p___argv @128 - __p___initenv @129 - __p___mb_cur_max @130 - __p___wargv @131 - __p___winitenv @132 - __p__acmdln @133 - __p__amblksiz @134 - __p__commode @135 - __p__daylight @136 - __p__dstbias @137 - __p__environ @138 -; __p__fileinfo @139 - __p__fmode @140 - __p__iob @141 -; __p__mbcasemap @142 - __p__mbctype @143 - __p__osver @144 - __p__pctype @145 - __p__pgmptr @146 - __p__pwctype @147 - __p__timezone @148 - __p__tzname @149 - __p__wcmdln @150 - __p__wenviron @151 - __p__winmajor @152 - __p__winminor @153 - __p__winver @154 - __p__wpgmptr @155 -; __pctype_func @156 - __pioinfo @157 DATA -; __pwctype_func @158 - __pxcptinfoptrs @159 - __set_app_type @160 - __setlc_active @161 DATA - __setusermatherr @162 - __threadhandle @163 - __threadid @164 - __toascii @165 - __unDName @166 - __unDNameEx @167 -; __uncaught_exception @42 - __unguarded_readlc_active @168 DATA - __wargv @169 DATA -; __wcserror @170 - __wgetmainargs @171 - __winitenv @172 DATA - _abnormal_termination @173 -; _abs64 @174 - _access @175 - _acmdln @176 DATA - _adj_fdiv_m16i @177 - _adj_fdiv_m32 @178 - _adj_fdiv_m32i @179 - _adj_fdiv_m64 @180 - _adj_fdiv_r @181 - _adj_fdivr_m16i @182 - _adj_fdivr_m32 @183 - _adj_fdivr_m32i @184 - _adj_fdivr_m64 @185 - _adj_fpatan @186 - _adj_fprem @187 - _adj_fprem1 @188 - _adj_fptan @189 - _adjust_fdiv @190 DATA - _aexit_rtn @191 - _aligned_free @192 - _aligned_malloc @193 - _aligned_offset_malloc @194 - _aligned_offset_realloc @195 - _aligned_realloc @196 - _amsg_exit @197 - _assert @198 -; _atodbl @199 - _atoi64 @200 - _atoldbl @201 - _beep @202 - _beginthread @203 - _beginthreadex @204 - _c_exit @205 - _cabs @206 - _callnewh @207 - _cexit @208 - _cgets @209 -; _cgetws @210 - _chdir @211 - _chdrive @212 - _chgsign @213 - _chkesp @214 - _chmod @215 - _chsize @216 - _clearfp @217 - _close @218 - _commit @219 - _commode @220 DATA - _control87 @221 - _controlfp @222 - _copysign @223 - _cprintf @224 - _cputs @225 -; _cputws @226 - _creat @227 - _cscanf @228 -; _ctime64 @229 - _ctype @230 DATA - _cwait @231 -; _cwprintf @232 -; _cwscanf @233 - _daylight @234 DATA - _dstbias @235 DATA - _dup @236 - _dup2 @237 - _ecvt @238 - _endthread @239 - _endthreadex @240 - _environ @241 DATA - _eof @242 - _errno @243 - _except_handler2 @244 - _except_handler3 @245 - _execl @246 - _execle @247 - _execlp @248 - _execlpe @249 - _execv @250 - _execve @251 - _execvp @252 - _execvpe @253 - _exit @254 - _expand @255 - _fcloseall @256 - _fcvt @257 - _fdopen @258 - _fgetchar @259 - _fgetwchar @260 - _filbuf @261 -; _fileinfo @262 - _filelength @263 - _filelengthi64 @264 - _fileno @265 - _findclose @266 - _findfirst @267 - _findfirst64 @268 - _findfirsti64 @269 - _findnext @270 - _findnext64 @271 - _findnexti64 @272 - _finite @273 - _flsbuf @274 - _flushall @275 - _fmode @276 DATA - _fpclass @277 - _fpieee_flt @278 - _fpreset @279 - _fputchar @280 - _fputwchar @281 - _fsopen @282 - _fstat @283 - _fstat64 @284 - _fstati64 @285 - _ftime @286 -; _ftime64 @287 - _ftol @288 - _fullpath @289 - _futime @290 -; _futime64 @291 - _gcvt @292 -; _get_heap_handle @293 - _get_osfhandle @294 - _get_sbh_threshold @295 - _getch @296 - _getche @297 - _getcwd @298 - _getdcwd @299 - _getdiskfree @300 - _getdllprocaddr @301 - _getdrive @302 - _getdrives=kernel32.GetLogicalDrives @303 - _getmaxstdio @304 - _getmbcp @305 - _getpid=kernel32.GetCurrentProcessId @306 - _getsystime @307 - _getw @308 -; _getwch @309 -; _getwche @310 - _getws @311 - _global_unwind2 @312 -; _gmtime64 @313 - _heapadd @314 - _heapchk @315 - _heapmin @316 - _heapset @317 -; _heapused @318 - _heapwalk @319 - _hypot @320 - _i64toa @321 - _i64tow @322 - _initterm @323 -; _inp @324 -; _inpd @325 -; _inpw @326 - _iob @327 DATA - _isatty @328 - _isctype @329 - _ismbbalnum @330 - _ismbbalpha @331 - _ismbbgraph @332 - _ismbbkalnum @333 - _ismbbkana @334 -; _ismbbkprint @335 - _ismbbkpunct @336 - _ismbblead @337 - _ismbbprint @338 - _ismbbpunct @339 - _ismbbtrail @340 - _ismbcalnum @341 - _ismbcalpha @342 - _ismbcdigit @343 - _ismbcgraph @344 - _ismbchira @345 - _ismbckata @346 - _ismbcl0 @347 - _ismbcl1 @348 - _ismbcl2 @349 - _ismbclegal @350 - _ismbclower @351 - _ismbcprint @352 - _ismbcpunct @353 - _ismbcspace @354 - _ismbcsymbol @355 - _ismbcupper @356 - _ismbslead @357 - _ismbstrail @358 - _isnan @359 - _itoa @360 - _itow @361 -; FIXME: these aren't actually implemented in CRT -; _j0 @362 -; _j1 @363 -; _jn @364 - _kbhit @365 - _lfind @366 - _loaddll @367 - _local_unwind2 @368 -; _localtime64 @369 - _lock @370 - _locking @371 - _logb @372 - _longjmpex=longjmp @373 - _lrotl @374 - _lrotr @375 - _lsearch @376 - _lseek @377 - _lseeki64 @378 - _ltoa @379 - _ltow @380 - _makepath @381 - _mbbtombc @382 - _mbbtype @383 -; _mbcasemap @384 - _mbccpy @385 - _mbcjistojms @386 - _mbcjmstojis @387 - _mbclen @388 - _mbctohira @389 - _mbctokata @390 - _mbctolower @391 - _mbctombb @392 - _mbctoupper @393 - _mbctype @394 DATA - _mbsbtype @395 - _mbscat @396 - _mbschr @397 - _mbscmp @398 - _mbscoll @399 - _mbscpy @400 - _mbscspn @401 - _mbsdec @402 - _mbsdup @403 - _mbsicmp @404 - _mbsicoll @405 - _mbsinc @406 - _mbslen @407 - _mbslwr @408 - _mbsnbcat @409 - _mbsnbcmp @410 - _mbsnbcnt @411 - _mbsnbcoll @412 - _mbsnbcpy @413 - _mbsnbicmp @414 - _mbsnbicoll @415 - _mbsnbset @416 - _mbsncat @417 - _mbsnccnt @418 - _mbsncmp @419 - _mbsncoll @420 - _mbsncpy @421 - _mbsnextc @422 - _mbsnicmp @423 - _mbsnicoll @424 - _mbsninc @425 - _mbsnset @426 - _mbspbrk @427 - _mbsrchr @428 - _mbsrev @429 - _mbsset @430 - _mbsspn @431 - _mbsspnp @432 - _mbsstr @433 - _mbstok @434 - _mbstrlen @435 - _mbsupr @436 - _memccpy @437 - _memicmp @438 - _mkdir @439 -; _mkgmtime @440 -; _mkgmtime64 @441 - _mktemp @442 -; _mktime64 @443 - _msize @444 - _nextafter @445 - _onexit @446 - _open @447 - _open_osfhandle @448 -; _osplatform @449 - _osver @450 DATA -; _outp @451 -; _outpd @452 -; _outpw @453 - _pclose @454 - _pctype @455 DATA - _pgmptr @456 DATA - _pipe @457 - _popen @458 - _purecall @459 - _putch @460 - _putenv @461 - _putw @462 -; _putwch @463 - _putws @464 - _pwctype @465 - _read @466 -; _resetstkoflw @467 - _rmdir @468 - _rmtmp @469 - _rotl @470 -; _rotl64 @471 - _rotr @472 -; _rotr64 @473 - _safe_fdiv @474 - _safe_fdivr @475 - _safe_fprem @476 - _safe_fprem1 @477 - _scalb @478 -; _scprintf @479 -; _scwprintf @480 - _searchenv @481 - _seh_longjmp_unwind=_seh_longjmp_unwind@4 @482 -; _set_SSE2_enable @483 - _set_error_mode @484 - _set_sbh_threshold @485 - _seterrormode @486 - _setjmp @487 - _setjmp3 @488 - _setmaxstdio @489 - _setmbcp @490 - _setmode @491 - _setsystime @492 - _sleep @493 - _snprintf @494 -; _snscanf @495 - _snwprintf @496 -; _snwscanf @497 - _sopen @498 - _spawnl @499 - _spawnle @500 - _spawnlp @501 - _spawnlpe @502 - _spawnv @503 - _spawnve @504 - _spawnvp @505 - _spawnvpe @506 - _splitpath @507 - _stat @508 - _stat64 @509 - _stati64 @510 - _statusfp @511 - _strcmpi @512 - _strdate @513 - _strdup @514 - _strerror @515 - _stricmp @516 - _stricoll @517 - _strlwr @518 - _strncoll @519 - _strnicmp @520 - _strnicoll @521 - _strnset @522 - _strrev @523 - _strset @524 - _strtime @525 - _strtoi64 @526 - _strtoui64=strtoull @527 - _strupr @528 - _swab @529 - _sys_errlist @530 DATA - _sys_nerr @531 DATA - _tell @532 - _telli64 @533 - _tempnam @534 -; _time64 @535 - _timezone @536 DATA - _tolower @537 - _toupper @538 - _tzname @539 DATA - _tzset @540 - _ui64toa @541 - _ui64tow @542 - _ultoa @543 - _ultow @544 - _umask @545 - _ungetch @546 -; _ungetwch @547 - _unlink @548 - _unloaddll @549 - _unlock @550 - _utime @551 -; _utime64 @552 -; _vscprintf @553 -; _vscwprintf @554 - _vsnprintf @555 - _vsnwprintf @556 - _waccess @557 - _wasctime @558 - _wchdir @559 - _wchmod @560 - _wcmdln @561 - _wcreat @562 - _wcsdup @563 -; _wcserror @564 - _wcsicmp @565 - _wcsicoll @566 - _wcslwr @567 - _wcsncoll @568 - _wcsnicmp @569 - _wcsnicoll @570 - _wcsnset @571 - _wcsrev @572 - _wcsset @573 - _wcstoi64 @574 - _wcstoui64 @575 - _wcsupr @576 - _wctime @577 -; _wctime64 @578 -; _wctype @579 - _wenviron @580 DATA - _wexecl @581 - _wexecle @582 - _wexeclp @583 - _wexeclpe @584 - _wexecv @585 - _wexecve @586 - _wexecvp @587 - _wexecvpe @588 - _wfdopen @589 - _wfindfirst @590 - _wfindfirst64 @591 - _wfindfirsti64 @592 - _wfindnext @593 - _wfindnext64 @594 - _wfindnexti64 @595 - _wfopen @596 - _wfreopen @597 - _wfsopen @598 - _wfullpath @599 - _wgetcwd @600 - _wgetdcwd @601 - _wgetenv @602 - _winmajor @603 DATA - _winminor @604 DATA - _winver @605 DATA - _wmakepath @606 - _wmkdir @607 - _wmktemp @608 - _wopen @609 - _wperror @610 - _wpgmptr @611 DATA - _wpopen @612 - _wputenv @613 - _wremove @614 - _wrename @615 - _write @616 - _wrmdir @617 - _wsearchenv @618 - _wsetlocale @619 - _wsopen @620 - _wspawnl @621 - _wspawnle @622 - _wspawnlp @623 - _wspawnlpe @624 - _wspawnv @625 - _wspawnve @626 - _wspawnvp @627 - _wspawnvpe @628 - _wsplitpath @629 - _wstat @630 - _wstat64 @631 - _wstati64 @632 - _wstrdate @633 - _wstrtime @634 - _wsystem @635 - _wtempnam @636 - _wtmpnam @637 -; _wtof @638 - _wtoi @639 - _wtoi64 @640 - _wtol @641 - _wunlink @642 - _wutime @643 -; _wutime64 @644 -; FIXME: these aren't actually implemented in CRT -; _y0 @645 -; _y1 @646 -; _yn @647 - abort @648 - abs @649 - acos @650 - asctime @651 - asin @652 - atan @653 - atan2 @654 - atexit @655 - atof @656 - atoi @657 - atol @658 - bsearch @659 - calloc @660 - ceil @661 - clearerr @662 - clock @663 - cos @664 - cosh @665 - ctime @666 - difftime @667 - div @668 - exit @669 - exp @670 - fabs @671 - fclose @672 - feof @673 - ferror @674 - fflush @675 - fgetc @676 - fgetpos @677 - fgets @678 - fgetwc @679 - fgetws @680 - floor @681 - fmod @682 - fopen @683 - fprintf @684 - fputc @685 - fputs @686 - fputwc @687 - fputws @688 - fread @689 - free @690 - freopen @691 - frexp @692 - fscanf @693 - fseek @694 - fsetpos @695 - ftell @696 - fwprintf @697 - fwrite @698 - fwscanf @699 - getc @700 - getchar @701 - getenv @702 - gets @703 - getwc @704 - getwchar @705 - gmtime @706 - is_wctype @707 - isalnum @708 - isalpha @709 - iscntrl @710 - isdigit @711 - isgraph @712 - isleadbyte @713 - islower @714 - isprint @715 - ispunct @716 - isspace @717 - isupper @718 - iswalnum @719 - iswalpha @720 - iswascii @721 - iswcntrl @722 - iswctype @723 - iswdigit @724 - iswgraph @725 - iswlower @726 - iswprint @727 - iswpunct @728 - iswspace @729 - iswupper @730 - iswxdigit @731 - isxdigit @732 - labs @733 - ldexp @734 - ldiv @735 - localeconv @736 - localtime @737 - log @738 - log10 @739 - longjmp @740 - malloc @741 - mblen @742 - mbstowcs @743 - mbtowc @744 - memchr @745 - memcmp @746 - memcpy @747 - memmove @748 - memset @749 - mktime @750 - modf @751 - perror @752 - pow @753 - printf @754 - putc @755 - putchar @756 - puts @757 - putwc=fputwc @758 - putwchar=_fputwchar @759 - qsort @760 - raise @761 - rand @762 - realloc @763 - remove @764 - rename @765 - rewind @766 - scanf @767 - setbuf @768 - setlocale @769 - setvbuf @770 - signal @771 - sin @772 - sinh @773 - sprintf @774 - sqrt @775 - srand @776 - sscanf @777 - strcat @778 - strchr @779 - strcmp @780 - strcoll @781 - strcpy @782 - strcspn @783 - strerror @784 - strftime @785 - strlen @786 - strncat @787 - strncmp @788 - strncpy @789 - strpbrk @790 - strrchr @791 - strspn @792 - strstr @793 - strtod @794 - strtok @795 - strtol @796 - strtoul @797 - strxfrm @798 - swprintf @799 - swscanf @800 - system @801 - tan @802 - tanh @803 - time @804 - tmpfile @805 - tmpnam @806 - tolower @807 - toupper @808 - towlower @809 - towupper @810 - ungetc @811 - ungetwc @812 - vfprintf @813 - vfwprintf @814 - vprintf @815 - vsprintf @816 - vswprintf @817 - vwprintf @818 - wcscat @819 - wcschr @820 - wcscmp @821 - wcscoll @822 - wcscpy @823 - wcscspn @824 - wcsftime @825 - wcslen @826 - wcsncat @827 - wcsncmp @828 - wcsncpy @829 - wcspbrk @830 - wcsrchr @831 - wcsspn @832 - wcsstr @833 - wcstod @834 - wcstok @835 - wcstol @836 - wcstombs @837 - wcstoul @838 - wcsxfrm @839 - wctomb @840 - wprintf @841 - wscanf @842 - - _mbsnbcpy_s - wcscpy_s - wcsncpy_s - _ftol2=_ftol - _ftol2_sse=_ftol - strcat_s - strcpy_s - - _swprintf=swprintf Added: branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt.spec URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/dll/w…
============================================================================== --- branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt.spec (added) +++ branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt.spec [iso-8859-1] Mon Jan 25 12:19:50 2010 @@ -1,0 +1,839 @@ +# msvcrt.dll - MS VC++ Run Time Library + +@ cdecl $I10_OUTPUT() MSVCRT_I10_OUTPUT +@ cdecl -i386 -norelay ??0__non_rtti_object@@QAE@ABV0@@Z(ptr) __thiscall_MSVCRT___non_rtti_object_copy_ctor +@ cdecl -i386 -norelay ??0__non_rtti_object@@QAE@PBD@Z(ptr) __thiscall_MSVCRT___non_rtti_object_ctor +@ cdecl -i386 -norelay ??0bad_cast@@QAE@ABQBD@Z(ptr) __thiscall_MSVCRT_bad_cast_ctor +@ cdecl -i386 -norelay ??0bad_cast@@QAE@ABV0@@Z(ptr) __thiscall_MSVCRT_bad_cast_copy_ctor +@ cdecl -i386 -norelay ??0bad_typeid@@QAE@ABV0@@Z(ptr) __thiscall_MSVCRT_bad_typeid_copy_ctor +@ cdecl -i386 -norelay ??0bad_typeid@@QAE@PBD@Z(ptr) __thiscall_MSVCRT_bad_typeid_ctor +@ cdecl -i386 -norelay ??0exception@@QAE@ABQBD@Z(ptr) __thiscall_MSVCRT_exception_ctor +@ cdecl -i386 -norelay ??0exception@@QAE@ABV0@@Z(ptr) __thiscall_MSVCRT_exception_copy_ctor +@ cdecl -i386 -norelay ??0exception@@QAE@XZ() __thiscall_MSVCRT_exception_default_ctor +@ cdecl -i386 -norelay ??1__non_rtti_object@@UAE@XZ() __thiscall_MSVCRT___non_rtti_object_dtor +@ cdecl -i386 -norelay ??1bad_cast@@UAE@XZ() __thiscall_MSVCRT_bad_cast_dtor +@ cdecl -i386 -norelay ??1bad_typeid@@UAE@XZ() __thiscall_MSVCRT_bad_typeid_dtor +@ cdecl -i386 -norelay ??1exception@@UAE@XZ() __thiscall_MSVCRT_exception_dtor +@ cdecl -i386 -norelay ??1type_info@@UAE@XZ() __thiscall_MSVCRT_type_info_dtor +@ cdecl ??2@YAPAXI@Z(long) MSVCRT_operator_new +@ cdecl ??_U@YAPAXI@Z(long) MSVCRT_operator_new +@ cdecl ??3@YAXPAX@Z(ptr) MSVCRT_operator_delete +@ cdecl ??_V@YAXPAX@Z(ptr) MSVCRT_operator_delete +@ cdecl -i386 -norelay ??4__non_rtti_object@@QAEAAV0@ABV0@@Z(ptr) __thiscall_MSVCRT___non_rtti_object_opequals +@ cdecl -i386 -norelay ??4bad_cast@@QAEAAV0@ABV0@@Z(ptr) __thiscall_MSVCRT_bad_cast_opequals +@ cdecl -i386 -norelay ??4bad_typeid@@QAEAAV0@ABV0@@Z(ptr) __thiscall_MSVCRT_bad_typeid_opequals +@ cdecl -i386 -norelay ??4exception@@QAEAAV0@ABV0@@Z(ptr) __thiscall_MSVCRT_exception_opequals +@ cdecl -i386 -norelay ??8type_info@@QBEHABV0@@Z(ptr) __thiscall_MSVCRT_type_info_opequals_equals +@ cdecl -i386 -norelay ??9type_info@@QBEHABV0@@Z(ptr) __thiscall_MSVCRT_type_info_opnot_equals +@ extern -i386 ??_7__non_rtti_object@@6B@ MSVCRT___non_rtti_object_vtable +@ extern -i386 ??_7bad_cast@@6B@ MSVCRT_bad_cast_vtable +@ extern -i386 ??_7bad_typeid@@6B@ MSVCRT_bad_typeid_vtable +@ extern -i386 ??_7exception@@6B@ MSVCRT_exception_vtable +@ cdecl -i386 -norelay ??_E__non_rtti_object@@UAEPAXI@Z(long) __thiscall_MSVCRT___non_rtti_object_vector_dtor +@ cdecl -i386 -norelay ??_Ebad_cast@@UAEPAXI@Z(long) __thiscall_MSVCRT_bad_cast_vector_dtor +@ cdecl -i386 -norelay ??_Ebad_typeid@@UAEPAXI@Z(long) __thiscall_MSVCRT_bad_typeid_vector_dtor +@ cdecl -i386 -norelay ??_Eexception@@UAEPAXI@Z(long) __thiscall_MSVCRT_exception_vector_dtor +@ cdecl -i386 -norelay ??_G__non_rtti_object@@UAEPAXI@Z(long) __thiscall_MSVCRT___non_rtti_object_scalar_dtor +@ cdecl -i386 -norelay ??_Gbad_cast@@UAEPAXI@Z(long) __thiscall_MSVCRT_bad_cast_scalar_dtor +@ cdecl -i386 -norelay ??_Gbad_typeid@@UAEPAXI@Z(long) __thiscall_MSVCRT_bad_typeid_scalar_dtor +@ cdecl -i386 -norelay ??_Gexception@@UAEPAXI@Z(long) __thiscall_MSVCRT_exception_scalar_dtor +@ cdecl ?_query_new_handler@@YAP6AHI@ZXZ() MSVCRT__query_new_handler +@ cdecl ?_query_new_mode@@YAHXZ() MSVCRT__query_new_mode +@ cdecl ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z(ptr) MSVCRT__set_new_handler +@ cdecl ?_set_new_mode@@YAHH@Z(long) MSVCRT__set_new_mode +@ cdecl ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZP6AXI0@Z@Z(ptr) MSVCRT__set_se_translator +@ cdecl -i386 -norelay ?before@type_info@@QBEHABV1@@Z(ptr) __thiscall_MSVCRT_type_info_before +@ cdecl -i386 -norelay ?name@type_info@@QBEPBDXZ() __thiscall_MSVCRT_type_info_name +@ cdecl -i386 -norelay ?raw_name@type_info@@QBEPBDXZ() __thiscall_MSVCRT_type_info_raw_name +@ cdecl ?set_new_handler@@YAP6AXXZP6AXXZ@Z(ptr) MSVCRT_set_new_handler +@ cdecl ?set_terminate@@YAP6AXXZP6AXXZ@Z(ptr) MSVCRT_set_terminate +@ cdecl ?set_unexpected@@YAP6AXXZP6AXXZ@Z(ptr) MSVCRT_set_unexpected +@ cdecl ?terminate@@YAXXZ() MSVCRT_terminate +@ cdecl ?unexpected@@YAXXZ() MSVCRT_unexpected +@ cdecl -i386 -norelay ?what@exception@@UBEPBDXZ() __thiscall_MSVCRT_what_exception +@ cdecl -arch=i386 _CIacos() +@ cdecl -arch=i386 _CIasin() +@ cdecl -arch=i386 _CIatan() +@ cdecl -arch=i386 _CIatan2() +@ cdecl -arch=i386 _CIcos() +@ cdecl -arch=i386 _CIcosh() +@ cdecl -arch=i386 _CIexp() +@ cdecl -arch=i386 _CIfmod() +@ cdecl -arch=i386 _CIlog() +@ cdecl -arch=i386 _CIlog10() +@ cdecl -arch=i386 _CIpow() +@ cdecl -arch=i386 _CIsin() +@ cdecl -arch=i386 _CIsinh() +@ cdecl -arch=i386 _CIsqrt() +@ cdecl -arch=i386 _CItan() +@ cdecl -arch=i386 _CItanh() +@ cdecl _CxxThrowException(long long) +@ cdecl -i386 -norelay _EH_prolog() +@ cdecl _Getdays() +@ cdecl _Getmonths() +@ cdecl _Gettnames() +@ extern _HUGE +@ cdecl _Strftime(str long str ptr ptr) +@ cdecl _XcptFilter(long ptr) +@ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler +@ cdecl __CppXcptFilter(long ptr) +@ cdecl __CxxDetectRethrow(ptr) +@ cdecl -i386 -norelay __CxxFrameHandler(ptr ptr ptr ptr) +# 88 56 0002AE4C __CxxFrameHandler2 +# 89 57 0002ADC8 __CxxFrameHandler3 +# 90 58 00029794 __DestructExceptionObject +@ stdcall -i386 __CxxLongjmpUnwind(ptr) +@ cdecl __CxxQueryExceptionSize() +@ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid +@ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast +@ cdecl __RTtypeid(ptr) MSVCRT___RTtypeid +@ cdecl __STRINGTOLD(ptr ptr str long) +#@ cdecl ___lc_codepage_func() +#@ cdecl ___lc_collate_cp_func() +#@ cdecl ___lc_handle_func() +#@ cdecl ___mb_cur_max_func() +@ cdecl ___setlc_active_func() +@ cdecl ___unguarded_readlc_active_add_func() +@ extern __argc +@ extern __argv +@ extern __badioinfo +@ cdecl __crtCompareStringA(long long str long str long) kernel32.CompareStringA +@ cdecl __crtCompareStringW(long long wstr long wstr long) kernel32.CompareStringW +@ cdecl __crtGetLocaleInfoW(long long ptr long)kernel32.GetLocaleInfo +@ cdecl __crtGetStringTypeW(long wstr long ptr) kernel32.GetStringTypeW +@ cdecl __crtLCMapStringA(long long str long ptr long long long) +# 109 6B 000414E0 __crtLCMapStringW +# 110 6C 00068CC4 __daylight +@ cdecl __dllonexit(ptr ptr ptr) +@ cdecl __doserrno() +@ cdecl __fpecode() +@ stub __get_app_type +@ cdecl __getmainargs(ptr ptr ptr long ptr) +@ extern __initenv +@ cdecl __iob_func() +@ cdecl __isascii(long) +@ cdecl __iscsym(long) +@ cdecl __iscsymf(long) +@ extern __lc_codepage +@ stub __lc_collate +@ extern __lc_collate_cp +@ extern __lc_handle +@ cdecl __lconv_init() +@ extern __mb_cur_max +@ cdecl -arch=i386 __p___argc() +@ cdecl -arch=i386 __p___argv() +@ cdecl -arch=i386 __p___initenv() +#@ cdecl -arch=i386 __p___mb_cur_max() ___mb_cur_max_func +@ cdecl -arch=i386 __p___wargv() +@ cdecl -arch=i386 __p___winitenv() +@ cdecl -arch=i386 __p__acmdln() +@ cdecl -arch=i386 __p__amblksiz() +@ cdecl -arch=i386 __p__commode() +@ cdecl -arch=i386 __p__daylight() +@ cdecl -arch=i386 __p__dstbias() +@ cdecl -arch=i386 __p__environ() +@ stub -arch=i386 __p__fileinfo #() +@ cdecl -arch=i386 __p__fmode() +@ cdecl -arch=i386 __p__iob() __iob_func +@ stub -arch=i386 __p__mbcasemap #() +@ cdecl -arch=i386 __p__mbctype() +@ cdecl -arch=i386 __p__osver() +@ cdecl -arch=i386 __p__pctype() __pctype_func +@ cdecl -arch=i386 __p__pgmptr() +@ stub -arch=i386 __p__pwctype #() +@ cdecl -arch=i386 __p__timezone() __p__timezone +@ cdecl -arch=i386 __p__tzname() +@ cdecl -arch=i386 __p__wcmdln() +@ cdecl -arch=i386 __p__wenviron() +@ cdecl -arch=i386 __p__winmajor() +@ cdecl -arch=i386 __p__winminor() +@ cdecl -arch=i386 __p__winver() +@ cdecl -arch=i386 __p__wpgmptr() +@ cdecl __pctype_func() __pctype_func +@ extern __pioinfo +@ stub __pxcptinfoptrs #() +@ cdecl __set_app_type(long) +@ extern __setlc_active +@ cdecl __setusermatherr(ptr) +@ cdecl __threadhandle() kernel32.GetCurrentThread +@ cdecl __threadid() kernel32.GetCurrentThreadId +@ cdecl __toascii(long) +@ cdecl __uncaught_exception() +@ cdecl __unDName(ptr str long ptr ptr long) +@ cdecl __unDNameEx(ptr str long ptr ptr ptr long) +@ extern __unguarded_readlc_active +@ extern __wargv +@ cdecl __wgetmainargs(ptr ptr ptr long ptr) +@ extern __winitenv +@ cdecl _abnormal_termination() +@ cdecl _access(str long) +@ extern _acmdln +@ stdcall -arch=i386 _adj_fdiv_m16i(long) +@ stdcall -arch=i386 _adj_fdiv_m32(long) +@ stdcall -arch=i386 _adj_fdiv_m32i(long) +@ stdcall -arch=i386 _adj_fdiv_m64(double) +@ cdecl -arch=i386 _adj_fdiv_r() +@ stdcall -arch=i386 _adj_fdivr_m16i(long) +@ stdcall -arch=i386 _adj_fdivr_m32(long) +@ stdcall -arch=i386 _adj_fdivr_m32i(long) +@ stdcall -arch=i386 _adj_fdivr_m64(double) +@ cdecl -arch=i386 _adj_fpatan() +@ cdecl -arch=i386 _adj_fprem() +@ cdecl -arch=i386 _adj_fprem1() +@ cdecl -arch=i386 _adj_fptan() +@ extern -arch=i386 _adjust_fdiv +# extern _aexit_rtn +@ cdecl _aligned_free(ptr) +@ cdecl _aligned_malloc(long long) +@ cdecl _aligned_offset_malloc(long long long) +@ cdecl _aligned_offset_realloc(ptr long long long) +@ cdecl _aligned_realloc(ptr long long) +@ cdecl _amsg_exit(long) +@ cdecl _assert(str str long) +@ stub _atodbl #(ptr str) +@ cdecl -ret64 _atoi64(str) ntdll._atoi64 +@ cdecl _atoldbl(ptr str) +@ cdecl _beep(long long) +@ cdecl _beginthread (ptr long ptr) +@ cdecl _beginthreadex (ptr long ptr ptr long ptr) +@ cdecl _c_exit() +@ cdecl _cabs(long) +@ cdecl _callnewh(long) +@ cdecl _cexit() +@ cdecl _cgets(str) +@ cdecl _chdir(str) +@ cdecl _chdrive(long) +@ cdecl _chgsign( double ) +@ cdecl -i386 -norelay _chkesp() +@ cdecl _chmod(str long) +@ cdecl _chsize (long long) +@ cdecl _clearfp() +@ cdecl _close(long) +@ cdecl _commit(long) +@ extern _commode +@ cdecl _control87(long long) +@ cdecl _controlfp(long long) +@ cdecl _copysign( double double ) +@ varargs _cprintf(str) +@ cdecl _cputs(str) +@ cdecl _creat(str long) +@ varargs _cscanf(str) +@ cdecl _ctime32(ptr) +@ cdecl _ctime64(ptr) +@ extern _ctype +@ cdecl _cwait(ptr long long) +@ extern _daylight +@ cdecl _difftime32(long long) +@ cdecl _difftime64(long long) +@ extern _dstbias +@ cdecl _dup (long) +@ cdecl _dup2 (long long) +@ cdecl _ecvt(double long ptr ptr) +@ cdecl _endthread () +@ cdecl _endthreadex(long) +@ extern _environ +@ cdecl _eof(long) +@ cdecl _errno() +@ cdecl _except_handler2(ptr ptr ptr ptr) +@ cdecl _except_handler3(ptr ptr ptr ptr) +@ varargs _execl(str str) +@ varargs _execle(str str) +@ varargs _execlp(str str) +@ varargs _execlpe(str str) +@ cdecl _execv(str ptr) +@ cdecl _execve(str ptr ptr) +@ cdecl _execvp(str ptr) +@ cdecl _execvpe(str ptr ptr) +@ cdecl _exit(long) +@ cdecl _expand(ptr long) +@ cdecl _fcloseall() +@ cdecl _fcvt(double long ptr ptr) +@ cdecl _fdopen(long str) +@ cdecl _fgetchar() +@ cdecl _fgetwchar() +@ cdecl _filbuf(ptr) +# extern _fileinfo +@ cdecl _filelength(long) +@ cdecl -ret64 _filelengthi64(long) +@ cdecl _fileno(ptr) +@ cdecl _findclose(long) +@ cdecl _findfirst(str ptr) +@ cdecl _findfirsti64(str ptr) +@ cdecl _findnext(long ptr) +@ cdecl _findnexti64(long ptr) +@ cdecl _finite( double ) +@ cdecl _flsbuf(long ptr) +@ cdecl _flushall() +@ extern _fmode +@ cdecl _fpclass(double) +@ stub _fpieee_flt #(long ptr ptr) +@ cdecl _fpreset() +@ cdecl _fputchar(long) +@ cdecl _fputwchar(long) +@ cdecl _fsopen(str str long) +@ cdecl _fstat(long ptr) +@ cdecl _fstat64(long ptr) +@ cdecl _fstati64(long ptr) +@ cdecl _ftime(ptr) +@ cdecl _ftime32(ptr) +@ cdecl _ftime64(ptr) +@ cdecl -ret64 _ftol() ntdll._ftol +@ cdecl -ret64 _ftol2_sse() ntdll._ftol #FIXME: SSE variant should be implemented +@ cdecl _fullpath(ptr str long) +@ cdecl _futime(long ptr) +@ cdecl _futime32(long ptr) +@ cdecl _futime64(long ptr) +@ cdecl _gcvt(double long str) +@ cdecl _get_osfhandle(long) +@ cdecl _get_sbh_threshold() +@ stub _get_terminate +@ stub _get_unexpected +@ cdecl _getch() +@ cdecl _getche() +@ cdecl _getcwd(str long) +@ cdecl _getdcwd(long str long) +@ cdecl _getdiskfree(long ptr) +@ cdecl _getdllprocaddr(long str long) +@ cdecl _getdrive() +@ cdecl _getdrives() kernel32.GetLogicalDrives +@ cdecl _getmaxstdio() +@ cdecl _getmbcp() +@ cdecl _getpid() kernel32.GetCurrentProcessId +@ stub _getsystime #(ptr) +@ cdecl _getw(ptr) +@ cdecl _getws(ptr) +@ cdecl _global_unwind2(ptr) +@ cdecl _gmtime32(ptr) +@ cdecl _gmtime64(ptr) +@ cdecl _heapadd (ptr long) +@ cdecl _heapchk() +@ cdecl _heapmin() +@ cdecl _heapset(long) +@ stub _heapused #(ptr ptr) +@ cdecl _heapwalk(ptr) +@ cdecl _hypot(double double) +@ cdecl _i64toa(long long ptr long) ntdll._i64toa +@ cdecl _i64tow(long long ptr long) ntdll._i64tow +@ cdecl _initterm(ptr ptr) +@ stub _inp #(long) -i386 +@ stub _inpd #(long) -i386 +@ stub _inpw #(long) -i386 +@ extern _iob +@ cdecl _isatty(long) +@ cdecl _isctype(long long) +@ stub _ismbbalnum #(long) +@ stub _ismbbalpha #(long) +@ stub _ismbbgraph #(long) +@ stub _ismbbkalnum #(long) +@ cdecl _ismbbkana(long) +@ stub _ismbbkprint #(long) +@ stub _ismbbkpunct #(long) +@ cdecl _ismbblead(long) +@ stub _ismbbprint #(long) +@ stub _ismbbpunct #(long) +@ cdecl _ismbbtrail(long) +@ cdecl _ismbcalnum(long) +@ cdecl _ismbcalpha(long) +@ cdecl _ismbcdigit(long) +@ cdecl _ismbcgraph(long) +@ cdecl _ismbchira(long) +@ cdecl _ismbckata(long) +@ stub _ismbcl0 #(long) +@ stub _ismbcl1 #(long) +@ stub _ismbcl2 #(long) +@ stub _ismbclegal #(long) +@ cdecl _ismbclower(long) +@ cdecl _ismbcprint(long) +@ cdecl _ismbcpunct(long) +@ cdecl _ismbcspace(long) +@ cdecl _ismbcsymbol(long) +@ cdecl _ismbcupper(long) +@ cdecl _ismbslead(ptr ptr) +@ cdecl _ismbstrail(ptr ptr) +@ cdecl _isnan( double ) +@ cdecl _itoa(long ptr long) ntdll._itoa +@ cdecl _itow(long ptr long) ntdll._itow +#@ cdecl _j0(double) +#@ cdecl _j1(double) +#@ cdecl _jn(long double) +@ cdecl _kbhit() +@ cdecl _lfind(ptr ptr ptr long ptr) +@ cdecl _loaddll(str) +@ cdecl -i386 _local_unwind2(ptr long) +@ cdecl _localtime32(ptr) +@ cdecl _localtime64(ptr) +@ cdecl _lock(long) +@ cdecl _locking(long long long) +@ cdecl _logb( double ) +@ cdecl -i386 _longjmpex(ptr long) longjmp +@ cdecl _lrotl(long long) +@ cdecl _lrotr(long long) +@ cdecl _lsearch(ptr ptr long long ptr) +@ cdecl _lseek(long long long) +@ cdecl -ret64 _lseeki64(long double long) +@ cdecl _ltoa(long ptr long) ntdll._ltoa +@ cdecl _ltow(long ptr long) ntdll._ltow +@ cdecl _makepath(ptr str str str str) +@ cdecl _matherr(ptr) +@ cdecl _mbbtombc(long) +@ cdecl _mbbtype(long long) +# extern _mbcasemap +@ cdecl _mbccpy (str str) +@ cdecl _mbcjistojms (long) +@ cdecl _mbcjmstojis (long) +@ cdecl _mbclen(ptr) +@ cdecl _mbctohira (long) +@ cdecl _mbctokata (long) +@ cdecl _mbctolower(long) +@ cdecl _mbctombb (long) +@ cdecl _mbctoupper(long) +@ extern _mbctype _mbctype +@ cdecl _mbsbtype(str long) +@ cdecl _mbscat(str str) +@ cdecl _mbschr(str long) +@ cdecl _mbscmp(str str) +@ cdecl _mbscoll(str str) +@ cdecl _mbscpy(ptr str) +@ cdecl _mbscspn (str str) +@ cdecl _mbsdec(ptr ptr) +@ cdecl _mbsdup(str) _strdup +@ cdecl _mbsicmp(str str) +@ cdecl _mbsicoll(str str) +@ cdecl _mbsinc(str) +@ cdecl _mbslen(str) +@ cdecl _mbslwr(str) +@ cdecl _mbsnbcat (str str long) +@ cdecl _mbsnbcmp(str str long) +@ cdecl _mbsnbcnt(ptr long) +@ cdecl _mbsnbcoll (str str long) +@ cdecl _mbsnbcpy(ptr str long) +@ cdecl _mbsnbcpy_s(ptr long str long) +@ cdecl _mbsnbicmp(str str long) +@ cdecl _mbsnbicoll (str str long) +@ cdecl _mbsnbset(str long long) +@ cdecl _mbsncat(str str long) +@ cdecl _mbsnccnt(str long) +@ cdecl _mbsncmp(str str long) +@ cdecl _mbsncoll (str str long) +@ cdecl _mbsncpy(str str long) +@ cdecl _mbsnextc(str) +@ cdecl _mbsnicmp(str str long) +@ cdecl _mbsnicoll (str str long) +@ cdecl _mbsninc(str long) +@ cdecl _mbsnset(str long long) +@ cdecl _mbspbrk(str str) +@ cdecl _mbsrchr(str long) +@ cdecl _mbsrev(str) +@ cdecl _mbsset(str long) +@ cdecl _mbsspn(str str) +@ cdecl _mbsspnp(str str) +@ cdecl _mbsstr(str str) +@ cdecl _mbstok(str str) +@ cdecl _mbstrlen(str) +@ cdecl _mbsupr(str) +@ cdecl _memccpy(ptr ptr long long) ntdll._memccpy +@ cdecl _memicmp(str str long) ntdll._memicmp +@ cdecl _mkdir(str) +@ cdecl _mktemp(str) +@ cdecl _mktime32(ptr) +@ cdecl _mktime64(ptr) +@ cdecl _msize(ptr) +@ cdecl _nextafter(double double) +@ cdecl _onexit(ptr) +@ varargs _open(str long) +@ cdecl _open_osfhandle(long long) +@ extern _osver +@ stub _outp #(long long) +@ stub _outpd #(long long) +@ stub _outpw #(long long) +@ cdecl _pclose (ptr) +@ extern _pctype +@ extern _pgmptr +@ cdecl _pipe (ptr long long) +@ cdecl _popen (str str) +@ cdecl _purecall() +@ cdecl _putch(long) +@ cdecl _putenv(str) +@ cdecl _putw(long ptr) +@ cdecl _putws(wstr) +# extern _pwctype +@ cdecl _read(long ptr long) +@ cdecl _rmdir(str) +@ cdecl _rmtmp() +@ cdecl _rotl(long long) +@ cdecl _rotr(long long) +@ cdecl -arch=i386 _safe_fdiv() +@ cdecl -arch=i386 _safe_fdivr() +@ cdecl -arch=i386 _safe_fprem() +@ cdecl -arch=i386 _safe_fprem1() +@ cdecl _scalb( double long) +@ cdecl _searchenv(str str ptr) +@ stdcall -i386 _seh_longjmp_unwind(ptr) +@ cdecl _set_error_mode(long) +@ cdecl _set_sbh_threshold(long) +@ cdecl _seterrormode(long) +@ cdecl -norelay _setjmp(ptr) +@ cdecl -i386 -norelay _setjmp3(ptr long) +@ cdecl _setmaxstdio(long) +@ cdecl _setmbcp(long) +@ cdecl _setmode(long long) +@ stub _setsystime #(ptr long) +@ cdecl _sleep(long) +@ varargs _snprintf(ptr long str) +@ varargs _snwprintf(ptr long wstr) +@ varargs _sopen(str long long) +@ varargs _spawnl(long str str) +@ varargs _spawnle(long str str) +@ varargs _spawnlp(long str str) +@ varargs _spawnlpe(long str str) +@ cdecl _spawnv(long str ptr) +@ cdecl _spawnve(long str ptr ptr) +@ cdecl _spawnvp(long str ptr) +@ cdecl _spawnvpe(long str ptr ptr) +@ cdecl _splitpath(str ptr ptr ptr ptr) ntdll._splitpath +@ cdecl _stat(str ptr) +@ cdecl _stat64(str ptr) +@ cdecl _stati64(str ptr) +@ cdecl _statusfp() +@ cdecl _strcmpi(str str) ntdll._strcmpi +@ cdecl _strdate(ptr) +@ cdecl _strdup(str) +@ cdecl _strerror(long) +@ cdecl _stricmp(str str) ntdll._stricmp +@ cdecl _stricoll(str str) +@ cdecl _strlwr(str) ntdll._strlwr +@ cdecl _strncoll (str str long) +@ cdecl _strnicmp(str str long) ntdll._strnicmp +@ cdecl _strnicoll (str str long) +@ cdecl _strnset(str long long) +@ cdecl _strrev(str) +@ cdecl _strset(str long) +@ cdecl _strtime(ptr) +@ cdecl _strtoui64(ptr ptr long) strtoull +@ cdecl _strupr(str) ntdll._strupr +@ cdecl _swab(str str long) +@ extern _sys_errlist +@ extern _sys_nerr +@ cdecl _tell(long) +@ cdecl -ret64 _telli64(long) +@ cdecl _tempnam(str str) +@ cdecl _time32(ptr) +@ cdecl _time64(ptr) +@ extern _timezone +@ cdecl _tolower(long) +@ cdecl _toupper(long) +@ extern _tzname +@ cdecl _tzset() +@ cdecl _ui64toa(long long ptr long) ntdll._ui64toa +@ cdecl _ui64tow(long long ptr long) ntdll._ui64tow +@ cdecl _ultoa(long ptr long) ntdll._ultoa +@ cdecl _ultow(long ptr long) ntdll._ultow +@ cdecl _umask(long) +@ cdecl _ungetch(long) +@ cdecl _unlink(str) +@ cdecl _unloaddll(long) +@ cdecl _unlock(long) +@ cdecl _utime32(str ptr) +@ cdecl _utime64(str ptr) +@ cdecl _utime(str ptr) +#@ cdecl _vscprintf(str ptr) +#@ cdecl _vscwprintf(wstr ptr) +@ cdecl _vsnprintf(ptr long str ptr) +@ cdecl _vsnwprintf(ptr long wstr ptr) +@ cdecl _waccess(wstr long) +@ cdecl _wasctime(ptr) +@ cdecl _wchdir(wstr) +@ cdecl _wchmod(wstr long) +@ extern _wcmdln +@ cdecl _wcreat(wstr long) +@ cdecl _wcsdup(wstr) +@ cdecl _wcsicmp(wstr wstr) ntdll._wcsicmp +@ cdecl _wcsicoll(wstr wstr) +@ cdecl _wcslwr(wstr) ntdll._wcslwr +@ cdecl _wcsncoll (wstr wstr long) +@ cdecl _wcsnicmp(wstr wstr long) ntdll._wcsnicmp +@ cdecl _wcsnicoll (wstr wstr long) +@ cdecl _wcsnset(wstr long long) +@ cdecl _wcsrev(wstr) +@ cdecl _wcsset(wstr long) +@ cdecl _wcsupr(wstr) ntdll._wcsupr +@ cdecl _wcsupr_s(wstr long) +@ cdecl _wctime(ptr) +@ cdecl _wctime32(ptr) +@ cdecl _wctime64(ptr) +@ extern _wenviron +@ varargs _wexecl(wstr wstr) +@ varargs _wexecle(wstr wstr) +@ varargs _wexeclp(wstr wstr) +@ varargs _wexeclpe(wstr wstr) +@ cdecl _wexecv(wstr ptr) +@ cdecl _wexecve(wstr ptr ptr) +@ cdecl _wexecvp(wstr ptr) +@ cdecl _wexecvpe(wstr ptr ptr) +@ cdecl _wfdopen(long wstr) +@ cdecl _wfindfirst(wstr ptr) +@ cdecl _wfindfirsti64(wstr ptr) +@ cdecl _wfindnext(long ptr) +@ cdecl _wfindnexti64(long ptr) +@ cdecl _wfopen(wstr wstr) +@ cdecl _wfreopen(wstr wstr ptr) +@ cdecl _wfsopen(wstr wstr long) +@ cdecl _wfullpath(ptr wstr long) +@ cdecl _wgetcwd(wstr long) +@ cdecl _wgetdcwd(long wstr long) +@ cdecl _wgetenv(wstr) +@ extern _winmajor +@ extern _winminor +@ extern _winver +@ cdecl _wmakepath(wstr wstr wstr wstr wstr) +@ cdecl _wmkdir(wstr) +@ cdecl _wmktemp(wstr) +@ varargs _wopen(wstr long) +@ stub _wperror #(wstr) +@ extern _wpgmptr +@ cdecl _wpopen (wstr wstr) +@ cdecl _wputenv(wstr) +@ cdecl _wremove(wstr) +@ cdecl _wrename(wstr wstr) +@ cdecl _write(long ptr long) +@ cdecl _wrmdir(wstr) +@ cdecl _wsearchenv(wstr wstr ptr) +@ cdecl _wsetlocale(long wstr) +@ varargs _wsopen (wstr long long) +@ varargs _wspawnl(long wstr wstr) +@ varargs _wspawnle(long wstr wstr) +@ varargs _wspawnlp(long wstr wstr) +@ varargs _wspawnlpe(long wstr wstr) +@ cdecl _wspawnv(long wstr ptr) +@ cdecl _wspawnve(long wstr ptr ptr) +@ cdecl _wspawnvp(long wstr ptr) +@ cdecl _wspawnvpe(long wstr ptr ptr) +@ cdecl _wsplitpath(wstr ptr ptr ptr ptr) +#@ cdecl _wsplitpath_s(wstr ptr long ptr long ptr long ptr long) +@ cdecl _wstat(wstr ptr) +@ cdecl _wstati64(wstr ptr) +@ cdecl _wstat64(wstr ptr) +@ cdecl _wstrdate(ptr) +@ cdecl _wstrtime(ptr) +@ cdecl _wsystem(wstr) +@ cdecl _wtempnam(wstr wstr) +@ stub _wtmpnam #(ptr) +@ cdecl _wtoi(wstr) ntdll._wtoi +@ cdecl _wtoi64(wstr) ntdll._wtoi64 +@ cdecl _wtol(wstr) ntdll._wtol +@ cdecl _wunlink(wstr) +@ cdecl _wutime(wstr ptr) +@ cdecl _wutime32(wstr ptr) +@ cdecl _wutime64(wstr ptr) +#@ cdecl _y0(double) +#@ cdecl _y1(double) +#@ cdecl _yn(long double ) +@ cdecl abort() +@ cdecl abs(long) ntdll.abs +@ cdecl acos(double) +@ cdecl asctime(ptr) +@ cdecl asin(double) +@ cdecl atan(double) +@ cdecl atan2(double double) +@ cdecl atexit(ptr) +@ cdecl atof(str) +@ cdecl atoi(str) ntdll.atoi +@ cdecl atol(str) ntdll.atol +@ cdecl bsearch(ptr ptr long long ptr) ntdll.bsearch +@ cdecl calloc(long long) +@ cdecl ceil(double) +@ cdecl ceilf(double) +@ cdecl clearerr(ptr) +@ cdecl clock() +@ cdecl cos(double) +@ cdecl cosh(double) +@ cdecl cosf(double) +@ cdecl ctime(ptr) +@ cdecl difftime(long long) +@ cdecl div(long long) +@ cdecl exit(long) +@ cdecl exp(double) +@ cdecl fabs(double) +@ cdecl fclose(ptr) +@ cdecl feof(ptr) +@ cdecl ferror(ptr) +@ cdecl fflush(ptr) +@ cdecl fgetc(ptr) +@ cdecl fgetpos(ptr ptr) +@ cdecl fgets(ptr long ptr) +@ cdecl fgetwc(ptr) +@ cdecl fgetws(ptr long ptr) +@ cdecl floor(double) +@ cdecl fmod(double double) +@ cdecl fmodf(double double) +@ cdecl fopen(str str) +@ varargs fprintf(ptr str) +@ cdecl fputc(long ptr) +@ cdecl fputs(str ptr) +@ cdecl fputwc(long ptr) +@ cdecl fputws(wstr ptr) +@ cdecl fread(ptr long long ptr) +@ cdecl free(ptr) +@ cdecl freopen(str str ptr) +@ cdecl frexp(double ptr) +@ varargs fscanf(ptr str) +@ cdecl fseek(ptr long long) +@ cdecl fsetpos(ptr ptr) +@ cdecl ftell(ptr) +@ varargs fwprintf(ptr wstr) +@ cdecl fwrite(ptr long long ptr) +@ varargs fwscanf(ptr wstr) +@ cdecl getc(ptr) +@ cdecl getchar() +@ cdecl getenv(str) +@ cdecl gets(str) +@ cdecl getwc(ptr) +@ cdecl getwchar() +@ cdecl gmtime(ptr) +@ cdecl is_wctype(long long) ntdll.iswctype +@ cdecl isalnum(long) +@ cdecl isalpha(long) +@ cdecl iscntrl(long) +@ cdecl isdigit(long) +@ cdecl isgraph(long) +@ cdecl isleadbyte(long) +@ cdecl islower(long) +@ cdecl isprint(long) +@ cdecl ispunct(long) +@ cdecl isspace(long) +@ cdecl isupper(long) +@ cdecl iswalnum(long) +@ cdecl iswalpha(long) ntdll.iswalpha +@ cdecl iswascii(long) +@ cdecl iswcntrl(long) +@ cdecl iswctype(long long) ntdll.iswctype +@ cdecl iswdigit(long) +@ cdecl iswgraph(long) +@ cdecl iswlower(long) +@ cdecl iswprint(long) +@ cdecl iswpunct(long) +@ cdecl iswspace(long) +@ cdecl iswupper(long) +@ cdecl iswxdigit(long) +@ cdecl isxdigit(long) +@ cdecl labs(long) ntdll.labs +@ cdecl ldexp( double long) +@ cdecl ldiv(long long) +@ cdecl localeconv() +@ cdecl localtime(ptr) +@ cdecl log(double) +@ cdecl logf(double) +@ cdecl log10(double) +@ cdecl longjmp(ptr long) +@ cdecl malloc(long) +@ cdecl mblen(ptr long) +@ cdecl mbstowcs(ptr str long) ntdll.mbstowcs +@ cdecl mbtowc(wstr str long) +@ cdecl memchr(ptr long long) ntdll.memchr +@ cdecl memcmp(ptr ptr long) ntdll.memcmp +@ cdecl memcpy(ptr ptr long) ntdll.memcpy +@ cdecl memmove(ptr ptr long) ntdll.memmove +@ cdecl memset(ptr long long) ntdll.memset +@ cdecl mktime(ptr) +@ cdecl modf(double ptr) +@ cdecl perror(str) +@ cdecl pow(double double) +@ varargs printf(str) +@ cdecl putc(long ptr) +@ cdecl putchar(long) +@ cdecl puts(str) +@ cdecl putwc(long ptr) fputwc #redirection is hack +@ cdecl putwchar(long) _fputwchar #redirection is hack +@ cdecl qsort(ptr long long ptr) ntdll.qsort +@ cdecl raise(long) +@ cdecl rand() +#@ cdecl rand_s(ptr) +@ cdecl realloc(ptr long) +@ cdecl remove(str) +@ cdecl rename(str str) +@ cdecl rewind(ptr) +@ varargs scanf(str) +@ cdecl setbuf(ptr ptr) +@ cdecl setlocale(long str) +@ cdecl setvbuf(ptr str long long) +@ cdecl signal(long long) +@ cdecl sin(double) +@ cdecl sinh(double) +@ varargs sprintf(ptr str) +#@ varargs sprintf_s(ptr long str) +@ cdecl sqrt(double) +@ cdecl sqrtf(double) +@ cdecl srand(long) +@ varargs sscanf(str str) +@ cdecl strcat(str str) ntdll.strcat +@ cdecl strcat_s(str long str) +@ cdecl strchr(str long) ntdll.strchr +@ cdecl strcmp(str str) ntdll.strcmp +@ cdecl strcoll(str str) +@ cdecl strcpy(ptr str) ntdll.strcpy +@ cdecl strcpy_s(ptr long str) +@ cdecl strcspn(str str) ntdll.strcspn +@ cdecl strerror(long) +@ cdecl strftime(str long str ptr) +@ cdecl strlen(str) ntdll.strlen +@ cdecl strncat(str str long) ntdll.strncat +@ cdecl strncmp(str str long) ntdll.strncmp +@ cdecl strncpy(ptr str long) ntdll.strncpy +@ cdecl strpbrk(str str) ntdll.strpbrk +@ cdecl strrchr(str long) ntdll.strrchr +@ cdecl strspn(str str) ntdll.strspn +@ cdecl strstr(str str) ntdll.strstr +@ cdecl strtod(str ptr) +@ cdecl strtok(str str) +@ cdecl strtol(str ptr long) +@ cdecl strtoul(str ptr long) +@ cdecl strxfrm(ptr str long) +@ varargs swprintf(ptr wstr) +@ varargs swscanf(wstr wstr) +@ cdecl system(str) +@ cdecl tan(double) +@ cdecl tanh(double) +@ cdecl time(ptr) +@ cdecl tmpfile() +@ cdecl tmpnam(ptr) +@ cdecl tolower(long) ntdll.tolower +@ cdecl toupper(long) ntdll.toupper +@ cdecl towlower(long) ntdll.towlower +@ cdecl towupper(long) ntdll.towupper +@ cdecl ungetc(long ptr) +@ cdecl ungetwc(long ptr) +@ cdecl vfprintf(ptr str ptr) +@ cdecl vfwprintf(ptr wstr ptr) +@ cdecl vprintf(str ptr) +@ cdecl vsprintf(ptr str ptr) +#@ cdecl vsprintf_s(ptr long str ptr) +@ cdecl vswprintf(ptr wstr ptr) +#@ cdecl vswprintf_s(ptr long wstr ptr) +@ cdecl vwprintf(wstr ptr) +@ cdecl wcscat(wstr wstr) ntdll.wcscat +#@ cdecl wcscat_s(wstr long wstr) +@ cdecl wcschr(wstr long) ntdll.wcschr +@ cdecl wcscmp(wstr wstr) ntdll.wcscmp +@ cdecl wcscoll(wstr wstr) +@ cdecl wcscpy(ptr wstr) ntdll.wcscpy +@ cdecl wcscpy_s(ptr long wstr) +@ cdecl wcscspn(wstr wstr) ntdll.wcscspn +@ cdecl wcsftime(ptr long wstr ptr) +@ cdecl wcslen(wstr) ntdll.wcslen +@ cdecl wcsncat(wstr wstr long) ntdll.wcsncat +@ cdecl wcsncmp(wstr wstr long) ntdll.wcsncmp +@ cdecl wcsncpy(ptr wstr long) ntdll.wcsncpy +@ cdecl wcsncpy_s(ptr long wstr long) +@ cdecl wcspbrk(wstr wstr) +@ cdecl wcsrchr(wstr long) ntdll.wcsrchr +@ cdecl wcsspn(wstr wstr) ntdll.wcsspn +@ cdecl wcsstr(wstr wstr) ntdll.wcsstr +@ cdecl wcstod(wstr ptr) +@ cdecl wcstok(wstr wstr) +@ cdecl wcstol(wstr ptr long) ntdll.wcstol +@ cdecl wcstombs(ptr ptr long) ntdll.wcstombs +@ cdecl wcstoul(wstr ptr long) ntdll.wcstoul +@ stub wcsxfrm #(ptr wstr long) +@ cdecl wctomb(ptr long) +@ varargs wprintf(wstr) +@ varargs wscanf(wstr) Propchange: branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt.spec ------------------------------------------------------------------------------ svn:eol-style = native
14 years, 9 months
1
0
0
0
[sserapion] 45245: [MSVCRT] - Convert to spec, based on wine. Tons of stuff missing but compiles, links and runs abiword and firefox. - Export floating point functions. [CRT] - Implement acosf, asinf, atanf, atan2f, copysign, copysignf, exp, expf, fabs, fmod, fmodf, hypotf, ceil, ceilf, cos, cosf, floor, floorf, log, log10, sin, sinf, tan, tanf, ldexp, log10f, logb, logbf, logf, modff, nextafter, nextafterf, powf, sinhf, sqrt, sqrtf, tanf, tanhf in amd64 compatible way. Made possible by mingw-w6
by sserapion@svn.reactos.org
Author: sserapion Date: Mon Jan 25 12:10:06 2010 New Revision: 45245 URL:
http://svn.reactos.org/svn/reactos?rev=45245&view=rev
Log: [MSVCRT] - Convert to spec, based on wine. Tons of stuff missing but compiles, links and runs abiword and firefox. - Export floating point functions. [CRT] - Implement acosf, asinf, atanf, atan2f, copysign, copysignf, exp, expf, fabs, fmod, fmodf, hypotf, ceil, ceilf, cos, cosf, floor, floorf, log, log10, sin, sinf, tan, tanf, ldexp, log10f, logb, logbf, logf, modff, nextafter, nextafterf, powf, sinhf, sqrt, sqrtf, tanf, tanhf in amd64 compatible way. Made possible by mingw-w64. Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/acosf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/asinf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/atan.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/atan2.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/atan2f.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/atanf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/copysign.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/copysignf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/cosf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/exp.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/expf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/fabs.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/fmod.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/fmodf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/hypotf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/ceil.S (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/ceilf.S (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/cos.S (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/floor.S (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/floorf.S (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/log.S (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/log10.S (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/sin.S (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/tan.S (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/ldexp.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/log10f.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/logb.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/logbf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/logf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/modff.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/nextafter.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/nextafterf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/powf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/sinf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/sinhf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/sqrt.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/sqrtf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/tanf.c (with props) branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/tanhf.c (with props) Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/atan.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/atan2.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/ceil.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/ceilf.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/cos.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/exp.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/fabs.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/floor.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/floorf.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/fmod.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/fmodf.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/ldexp.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/log.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/log10.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/sin.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/sqrt.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/sqrtf.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/tan.S branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/atan_asm.s branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/ceil_asm.s branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/cos_asm.s branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/fabs_asm.s branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/log10_asm.s branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/log_asm.s branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/sin_asm.s branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/sqrt_asm.s branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/tan_asm.s branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/j0_y0.c branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/j1_y1.c branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/jn_yn.c branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/pow_asm.c Modified: branches/ros-amd64-bringup/reactos/dll/win32/gdiplus/gdiplus.rbuild branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/dllmain.c branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt.rbuild branches/ros-amd64-bringup/reactos/include/crt/math.h branches/ros-amd64-bringup/reactos/lib/sdk/crt/crt.rbuild branches/ros-amd64-bringup/reactos/lib/sdk/crt/except/cppexcept.c branches/ros-amd64-bringup/reactos/lib/sdk/crt/except/i386/unwind.c branches/ros-amd64-bringup/reactos/lib/sdk/crt/libcntpr.rbuild branches/ros-amd64-bringup/reactos/lib/sdk/crt/stdio/file.c branches/ros-amd64-bringup/reactos/lib/sdk/crt/string/ctype.c branches/ros-amd64-bringup/reactos/lib/sdk/crt/time/asctime.c branches/ros-amd64-bringup/reactos/lib/sdk/crt/time/ctime.c branches/ros-amd64-bringup/reactos/lib/sdk/crt/time/utime.c [This mail would be too long, it was shortened to contain the URLs only.] Modified: branches/ros-amd64-bringup/reactos/dll/win32/gdiplus/gdiplus.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/dll/w…
Modified: branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/dllmain.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/dll/w…
Modified: branches/ros-amd64-bringup/reactos/dll/win32/msvcrt/msvcrt.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/dll/w…
Modified: branches/ros-amd64-bringup/reactos/include/crt/math.h URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/inclu…
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/crt.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/except/cppexcept.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/except/i386/unwind.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/libcntpr.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/acosf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/atan.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/atan2.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/ceil.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/ceilf.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/cos.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/exp.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/fabs.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/floor.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/floorf.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/fmod.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/fmodf.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/ldexp.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/log.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/log10.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/sin.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/sqrt.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/sqrtf.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/amd64/tan.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/asinf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/atan.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/atan2.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/atan2f.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/atanf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/copysign.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/copysignf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/cosf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/exp.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/expf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/fabs.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/fmod.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/fmodf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/hypotf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/atan_asm.s URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/ceil.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/ceil_asm.s URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/ceilf.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/cos.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/cos_asm.s URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/fabs_asm.s URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/floor.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/floorf.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/log.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/log10.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/log10_asm.s URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/log_asm.s URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/sin.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/sin_asm.s URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/sqrt_asm.s URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/tan.S URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/i386/tan_asm.s URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/j0_y0.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/j1_y1.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/jn_yn.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/ldexp.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/log10f.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/logb.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/logbf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/logf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/modff.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/nextafter.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/nextafterf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Removed: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/pow_asm.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/powf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/sinf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/sinhf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/sqrt.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/sqrtf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/tanf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Added: branches/ros-amd64-bringup/reactos/lib/sdk/crt/math/tanhf.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/stdio/file.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/string/ctype.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time/asctime.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time/ctime.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
Modified: branches/ros-amd64-bringup/reactos/lib/sdk/crt/time/utime.c URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/s…
14 years, 9 months
1
0
0
0
[sir_richard] 45244: [NTOS]: Split the GENERATE_TRAP_HANDLER in two separate macros. The original builds the name of the function (and makes it global), while the TRAP_HANDLER_PROLOG is actually the code. [NTOS]: Make TRAP_HANDLER_PROLOG handle software traps, in which the interrupt stack must be faked. [NTOS]: Optimize TRAP_HANDLER_PROLOG by not pushing an error code and then making space on the stack without the error code -- just make space with the error code in the first place (nobody reads
by sir_richard@svn.reactos.org
Author: sir_richard Date: Mon Jan 25 04:00:01 2010 New Revision: 45244 URL:
http://svn.reactos.org/svn/reactos?rev=45244&view=rev
Log: [NTOS]: Split the GENERATE_TRAP_HANDLER in two separate macros. The original builds the name of the function (and makes it global), while the TRAP_HANDLER_PROLOG is actually the code. [NTOS]: Make TRAP_HANDLER_PROLOG handle software traps, in which the interrupt stack must be faked. [NTOS]: Optimize TRAP_HANDLER_PROLOG by not pushing an error code and then making space on the stack without the error code -- just make space with the error code in the first place (nobody reads the value, so having it zero or garbage isn't important). [HAL]: Implement the APC and DPC software interrupt traps in C instead of ASM. Delete all contents of irq.S except the two GENERATE_TRAP_HANDLER stubs. Modified: trunk/reactos/hal/halx86/generic/irq.S trunk/reactos/hal/halx86/generic/pic.c trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S Modified: trunk/reactos/hal/halx86/generic/irq.S URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/irq.S?r…
============================================================================== --- trunk/reactos/hal/halx86/generic/irq.S [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/irq.S [iso-8859-1] Mon Jan 25 04:00:01 2010 @@ -7,98 +7,13 @@ /* INCLUDES ******************************************************************/ -/* Enable this (and the define in spinlock.c) to make UP HAL work for MP Kernel */ -/* #define CONFIG_SMP */ - #include <asm.h> #include <internal/i386/asmmacro.S> .intel_syntax noprefix /* GLOBALS *******************************************************************/ -_UnhandledMsg: - .asciz "\n\x7\x7!!! Unhandled or Unexpected Code at line: %lx!!!\n" - /* FUNCTIONS *****************************************************************/ -.globl _HalpApcInterrupt -.func HalpApcInterrupt -TRAP_FIXUPS hapc_a, hapc_t, DoFixupV86, DoFixupAbios -_HalpApcInterrupt: - - /* Create fake interrupt stack */ - pop eax - pushf - push cs - push eax - - /* Enter interrupt */ - INT_PROLOG hapc_a, hapc_t, DoPushFakeErrorCode -.endfunc - -.globl _HalpApcInterrupt2ndEntry -.func HalpApcInterrupt2ndEntry -_HalpApcInterrupt2ndEntry: - - /* Save current IRQL and set to APC level */ - push PCR[KPCR_IRQL] - mov dword ptr PCR[KPCR_IRQL], APC_LEVEL - and dword ptr PCR[KPCR_IRR], ~(1 << APC_LEVEL) - - /* Enable interrupts and check if we came from User/V86 mode */ - sti - mov eax, [ebp+KTRAP_FRAME_CS] - and eax, MODE_MASK - test dword ptr [ebp+KTRAP_FRAME_EFLAGS], EFLAGS_V86_MASK - jz DeliverApc - - /* Set user mode delivery */ - or eax, UserMode - -DeliverApc: - - /* Deliver the APCs */ - push ebp - push 0 - push eax - call _KiDeliverApc@12 - - /* Disable interrupts and end it */ - cli - call _HalpEndSoftwareInterrupt@4 - jmp _Kei386EoiHelper@0 -.endfunc - -.globl _HalpDispatchInterrupt -.func HalpDispatchInterrupt -TRAP_FIXUPS hdpc_a, hdpc_t, DoFixupV86, DoFixupAbios -_HalpDispatchInterrupt: - - /* Create fake interrupt stack */ - pop eax - pushf - push cs - push eax - - /* Enter interrupt */ - INT_PROLOG hdpc_a, hdpc_t, DoPushFakeErrorCode -.endfunc - -.globl _HalpDispatchInterrupt2ndEntry -.func HalpDispatchInterrupt2ndEntry -_HalpDispatchInterrupt2ndEntry: - - /* Save current IRQL and set to DPC level */ - push PCR[KPCR_IRQL] - mov dword ptr PCR[KPCR_IRQL], DISPATCH_LEVEL - and dword ptr PCR[KPCR_IRR], ~(1 << DISPATCH_LEVEL) - - /* Enable interrupts and let the kernel handle this */ - sti - call _KiDispatchInterrupt@0 - - /* Disable interrupts and end it */ - cli - call _HalpEndSoftwareInterrupt@4 - jmp _Kei386EoiHelper@0 -.endfunc +GENERATE_TRAP_HANDLER HalpApcInterrupt, 0, 0, 1 +GENERATE_TRAP_HANDLER HalpDispatchInterrupt, 0, 0, 1 Modified: trunk/reactos/hal/halx86/generic/pic.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/pic.c?r…
============================================================================== --- trunk/reactos/hal/halx86/generic/pic.c [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/pic.c [iso-8859-1] Mon Jan 25 04:00:01 2010 @@ -813,3 +813,76 @@ PendingIrql = SWInterruptLookUpTable[Pcr->IRR]; if (PendingIrql > OldIrql) SWInterruptHandlerTable[PendingIrql](); } + +/* SOFTWARE INTERRUPT TRAPS ***************************************************/ + +VOID +FASTCALL +HalpApcInterruptHandler(IN PKTRAP_FRAME TrapFrame) +{ + KIRQL CurrentIrql; + PKPCR Pcr = KeGetPcr(); + + /* Set up a fake INT Stack */ + TrapFrame->EFlags = __readeflags(); + TrapFrame->SegCs = KGDT_R0_CODE; + TrapFrame->Eip = TrapFrame->Eax; + + /* Build the trap frame */ + KiEnterInterruptTrap(TrapFrame); + + /* Save the current IRQL and update it */ + CurrentIrql = Pcr->Irql; + Pcr->Irql = APC_LEVEL; + + /* Remove DPC from IRR */ + Pcr->IRR &= ~(1 << APC_LEVEL); + + /* Enable interrupts and call the kernel's APC interrupt handler */ + _enable(); + KiDeliverApc(((KiUserTrap(TrapFrame)) || (TrapFrame->EFlags & EFLAGS_V86_MASK)) ? + UserMode : KernelMode, + NULL, + TrapFrame); + + /* Disable interrupts and end the interrupt */ + _disable(); + HalpEndSoftwareInterrupt(CurrentIrql); + + /* Exit the interrupt */ + KiEoiHelper(TrapFrame); +} + +VOID +FASTCALL +HalpDispatchInterruptHandler(IN PKTRAP_FRAME TrapFrame) +{ + KIRQL CurrentIrql; + PKPCR Pcr = KeGetPcr(); + + /* Set up a fake INT Stack */ + TrapFrame->EFlags = __readeflags(); + TrapFrame->SegCs = KGDT_R0_CODE; + TrapFrame->Eip = TrapFrame->Eax; + + /* Build the trap frame */ + KiEnterInterruptTrap(TrapFrame); + + /* Save the current IRQL and update it */ + CurrentIrql = Pcr->Irql; + Pcr->Irql = DISPATCH_LEVEL; + + /* Remove DPC from IRR */ + Pcr->IRR &= ~(1 << DISPATCH_LEVEL); + + /* Enable interrupts and call the kernel's DPC interrupt handler */ + _enable(); + KiDispatchInterrupt(); + + /* Disable interrupts and end the interrupt */ + _disable(); + HalpEndSoftwareInterrupt(CurrentIrql); + + /* Exit the interrupt */ + KiEoiHelper(TrapFrame); +} Modified: trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S [iso-8859-1] Mon Jan 25 04:00:01 2010 @@ -221,7 +221,7 @@ .endm // -// @name GENERATE_TRAP_HANDLER +// @name TRAP_HANDLER_PROLOG // // This macro creates a kernel trap handler. // @@ -229,16 +229,21 @@ // // @remark None. // -.macro GENERATE_TRAP_HANDLER Name, ErrorCode=1, FastV86=0 -.func Name -_&Name: - /* Some traps generate an error code, some don't (thanks, Intel!) */ - .if \ErrorCode - push 0 +.macro TRAP_HANDLER_PROLOG ErrorCode=1, Software=0 + + /* What kind of trap is it */ + .if \Software + /* Software traps need a fake interrupt stack */ + pop eax + sub esp, KTRAP_FRAME_ESP + .elseif \ErrorCode + /* Some traps generate an error code, some don't (thanks, Intel!) */ + sub esp, KTRAP_FRAME_EIP + .else + sub esp, KTRAP_FRAME_ERROR_CODE .endif - + /* Make space for trap frame and save registers before we enter C code */ - sub esp, KTRAP_FRAME_ERROR_CODE mov [esp+KTRAP_FRAME_EAX], eax mov [esp+KTRAP_FRAME_EBX], ebx mov [esp+KTRAP_FRAME_ECX], ecx @@ -247,7 +252,22 @@ mov [esp+KTRAP_FRAME_EDI], edi mov [esp+KTRAP_FRAME_EBP], ebp mov ecx, esp - +.endm + +// +// @name GENERATE_TRAP_HANDLER +// +// This macro creates a kernel trap handler. +// +// @param None. +// +// @remark None. +// +.macro GENERATE_TRAP_HANDLER Name, ErrorCode=1, FastV86=0, Software=0 +.globl _&Name +.func Name +_&Name: + TRAP_HANDLER_PROLOG ErrorCode, Software /* * The GPF and Invalid Opcode handlers are performance critical when talking * about V8086 traps, because they control the main flow of execution during
14 years, 9 months
1
0
0
0
[sir_richard] 45243: [HAL]: Implement HalEndSystemInterrupt and HalpEndSoftwareInterrupt. Remove more ASM code/tables that aren't unused anymore.
by sir_richard@svn.reactos.org
Author: sir_richard Date: Mon Jan 25 02:51:47 2010 New Revision: 45243 URL:
http://svn.reactos.org/svn/reactos?rev=45243&view=rev
Log: [HAL]: Implement HalEndSystemInterrupt and HalpEndSoftwareInterrupt. Remove more ASM code/tables that aren't unused anymore. Modified: trunk/reactos/hal/halx86/generic/irq.S trunk/reactos/hal/halx86/generic/pic.c Modified: trunk/reactos/hal/halx86/generic/irq.S URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/irq.S?r…
============================================================================== --- trunk/reactos/hal/halx86/generic/irq.S [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/irq.S [iso-8859-1] Mon Jan 25 02:51:47 2010 @@ -16,100 +16,10 @@ /* GLOBALS *******************************************************************/ -KiI8259MaskTable: - .long 0 /* IRQL 0 */ - .long 0 /* IRQL 1 */ - .long 0 /* IRQL 2 */ - .long 0 /* IRQL 3 */ - .long 0xFF800000 /* IRQL 4 */ - .long 0xFFC00000 /* IRQL 5 */ - .long 0xFFE00000 /* IRQL 6 */ - .long 0xFFF00000 /* IRQL 7 */ - .long 0xFFF80000 /* IRQL 8 */ - .long 0xFFFC0000 /* IRQL 9 */ - .long 0xFFFE0000 /* IRQL 10 */ - .long 0xFFFF0000 /* IRQL 11 */ - .long 0xFFFF8000 /* IRQL 12 */ - .long 0xFFFFC000 /* IRQL 13 */ - .long 0xFFFFE000 /* IRQL 14 */ - .long 0xFFFFF000 /* IRQL 15 */ - .long 0xFFFFF800 /* IRQL 16 */ - .long 0xFFFFFC00 /* IRQL 17 */ - .long 0xFFFFFE00 /* IRQL 18 */ - .long 0xFFFFFE00 /* IRQL 19 */ - .long 0xFFFFFE80 /* IRQL 20 */ - .long 0xFFFFFEC0 /* IRQL 21 */ - .long 0xFFFFFEE0 /* IRQL 22 */ - .long 0xFFFFFEF0 /* IRQL 23 */ - .long 0xFFFFFEF8 /* IRQL 24 */ - .long 0xFFFFFEF8 /* IRQL 25 */ - .long 0xFFFFFEFA /* IRQL 26 */ - .long 0xFFFFFFFA /* IRQL 27 */ - .long 0xFFFFFFFB /* IRQL 28 */ - .long 0xFFFFFFFB /* IRQL 29 */ - .long 0xFFFFFFFB /* IRQL 30 */ - .long 0xFFFFFFFB /* IRQL 31 */ - -SWInterruptLookUpTable: - .byte PASSIVE_LEVEL /* IRR 0 */ - .byte PASSIVE_LEVEL /* IRR 1 */ - .byte APC_LEVEL /* IRR 2 */ - .byte APC_LEVEL /* IRR 3 */ - .byte DISPATCH_LEVEL /* IRR 4 */ - .byte DISPATCH_LEVEL /* IRR 5 */ - .byte DISPATCH_LEVEL /* IRR 6 */ - .byte DISPATCH_LEVEL /* IRR 7 */ - -SWInterruptHandlerTable: - .long _KiUnexpectedInterrupt /* PASSIVE_LEVEL */ - .long _HalpApcInterrupt /* APC_LEVEL */ - .long _HalpDispatchInterrupt /* DISPATCH_LEVEL */ - -SWInterruptHandlerTable2: - .long _KiUnexpectedInterrupt /* PASSIVE_LEVEL */ - .long _HalpApcInterrupt2ndEntry /* APC_LEVEL */ - .long _HalpDispatchInterrupt2ndEntry /* DISPATCH_LEVEL */ - _UnhandledMsg: .asciz "\n\x7\x7!!! Unhandled or Unexpected Code at line: %lx!!!\n" /* FUNCTIONS *****************************************************************/ - -.globl _HalEndSystemInterrupt@8 -.func HalEndSystemInterrupt@8 -_HalEndSystemInterrupt@8: - - /* Read IRQL */ - xor ecx, ecx - mov cl, [esp+4] - - /* Check if it's a software interrupt */ - cmp dword ptr PCR[KPCR_IRQL], DISPATCH_LEVEL - jbe SkipMask2 - - /* Hardware interrupt, mask the appropriate IRQs in the PIC */ - mov eax, KiI8259MaskTable[ecx*4] - or eax, PCR[KPCR_IDR] - out 0x21, al - shr eax, 8 - out 0xA1, al - -SkipMask2: - - /* Set IRQL and check if there are pending software interrupts */ - mov PCR[KPCR_IRQL], ecx - mov eax, PCR[KPCR_IRR] - mov al, SWInterruptLookUpTable[eax] - cmp al, cl - ja DoCall - ret 8 - -DoCall: - - /* There are pending software interrupts, call their handlers */ - add esp, 12 - jmp SWInterruptHandlerTable2[eax*4] -.endfunc .globl _HalpApcInterrupt .func HalpApcInterrupt @@ -192,34 +102,3 @@ call _HalpEndSoftwareInterrupt@4 jmp _Kei386EoiHelper@0 .endfunc - -.globl _HalpEndSoftwareInterrupt@4 -.func HalpEndSoftwareInterrupt@4 -_HalpEndSoftwareInterrupt@4: - - /* Get the IRQL and check if we're in the software region */ - movzx ecx, byte ptr [esp+4] - cmp dword ptr PCR[KPCR_IRQL], DISPATCH_LEVEL - jbe SoftwareInt - - /* Set the right mask in the PIC for the hardware IRQ */ - mov eax, KiI8259MaskTable[ecx*4] - or eax, PCR[KPCR_IDR] - out 0x21, al - shr eax, 8 - out 0xA1, al - -SoftwareInt: - /* Check if there are pending software interrupts */ - mov PCR[KPCR_IRQL], ecx - mov eax, PCR[KPCR_IRR] - mov al, SWInterruptLookUpTable[eax] - cmp al, cl - ja DoCall2 - ret 4 - -DoCall2: - /* There are pending softwate interrupts, call their handlers */ - add esp, 8 - jmp SWInterruptHandlerTable2[eax*4] -.endfunc Modified: trunk/reactos/hal/halx86/generic/pic.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/pic.c?r…
============================================================================== --- trunk/reactos/hal/halx86/generic/pic.c [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/pic.c [iso-8859-1] Mon Jan 25 02:51:47 2010 @@ -530,6 +530,33 @@ KeGetPcr()->IRR &= ~(1 << Irql); } +VOID +NTAPI +HalpEndSoftwareInterrupt(IN KIRQL OldIrql) +{ + KIRQL PendingIrql; + PKPCR Pcr = KeGetPcr(); + PIC_MASK Mask; + + /* Check if currentl IRQL affects hardware state */ + if (Pcr->Irql > DISPATCH_LEVEL) + { + /* Set new PIC mask */ + Mask.Both = KiI8259MaskTable[OldIrql] | Pcr->IDR; + __outbyte(PIC1_DATA_PORT, Mask.Master); + __outbyte(PIC2_DATA_PORT, Mask.Slave); + } + + /* Set old IRQL */ + Pcr->Irql = OldIrql; + + /* Check for pending software interrupts and compare with current IRQL */ + PendingIrql = SWInterruptLookUpTable[Pcr->IRR]; + + /* NOTE: We can do better! We need to support "jumping" a frame for nested cases! */ + if (PendingIrql > OldIrql) SWInterruptHandlerTable[PendingIrql](); +} + /* INTERRUPT DISMISSAL FUNCTIONS **********************************************/ BOOLEAN @@ -757,3 +784,32 @@ Irq = Vector - PRIMARY_VECTOR_BASE; return HalpSpecialDismissTable[Irq](Irql, Irq, OldIrql); } + +/* + * @implemented + */ +VOID +NTAPI +HalEndSystemInterrupt(IN KIRQL OldIrql, + IN UCHAR Vector) +{ + KIRQL PendingIrql; + PKPCR Pcr = KeGetPcr(); + PIC_MASK Mask; + + /* Check if currentl IRQL affects hardware state */ + if (Pcr->Irql > DISPATCH_LEVEL) + { + /* Set new PIC mask */ + Mask.Both = KiI8259MaskTable[OldIrql] | Pcr->IDR; + __outbyte(PIC1_DATA_PORT, Mask.Master); + __outbyte(PIC2_DATA_PORT, Mask.Slave); + } + + /* Set old IRQL */ + Pcr->Irql = OldIrql; + + /* Check for pending software interrupts and compare with current IRQL */ + PendingIrql = SWInterruptLookUpTable[Pcr->IRR]; + if (PendingIrql > OldIrql) SWInterruptHandlerTable[PendingIrql](); +}
14 years, 9 months
1
0
0
0
[jimtabor] 45242: [Win32k|Ggi32] - Diagnostic commit used for troubleshooting leaking region handles. - Updates to headers and experimental code added for regions.
by jimtabor@svn.reactos.org
Author: jimtabor Date: Mon Jan 25 02:33:01 2010 New Revision: 45242 URL:
http://svn.reactos.org/svn/reactos?rev=45242&view=rev
Log: [Win32k|Ggi32] - Diagnostic commit used for troubleshooting leaking region handles. - Updates to headers and experimental code added for regions. Modified: trunk/reactos/dll/win32/gdi32/misc/misc.c trunk/reactos/subsystems/win32/win32k/include/dc.h trunk/reactos/subsystems/win32/win32k/include/engobjects.h trunk/reactos/subsystems/win32/win32k/include/region.h trunk/reactos/subsystems/win32/win32k/ntuser/windc.c trunk/reactos/subsystems/win32/win32k/objects/cliprgn.c trunk/reactos/subsystems/win32/win32k/objects/dclife.c trunk/reactos/subsystems/win32/win32k/objects/dcstate.c trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c trunk/reactos/subsystems/win32/win32k/objects/region.c Modified: trunk/reactos/dll/win32/gdi32/misc/misc.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdi32/misc/misc.…
============================================================================== --- trunk/reactos/dll/win32/gdi32/misc/misc.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdi32/misc/misc.c [iso-8859-1] Mon Jan 25 02:33:01 2010 @@ -314,7 +314,7 @@ { if (pRgn_Attr->AttrFlags & ATTR_CACHED) { - DPRINT("Get Handle! Count %d\n", GdiHandleCache->ulNumHandles[Type]); + DPRINT1("Get Handle! Count %d PEB 0x%x\n", GdiHandleCache->ulNumHandles[Type], NtCurrentTeb()->ProcessEnvironmentBlock); pRgn_Attr->AttrFlags &= ~ATTR_CACHED; hPtr[Number - 1] = NULL; GdiHandleCache->ulNumHandles[Type]--; Modified: trunk/reactos/subsystems/win32/win32k/include/dc.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/dc.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/include/dc.h [iso-8859-1] Mon Jan 25 02:33:01 2010 @@ -3,6 +3,7 @@ typedef struct _DC *PDC; +#include "engobjects.h" #include "brush.h" #include "bitmaps.h" #include "pdevobj.h" @@ -31,22 +32,11 @@ BYTE bitsPerPixel; - CLIPOBJ *CombinedClip; + CLIPOBJ *CombinedClip; /* Use XCLIPOBJ in DC. */ UNICODE_STRING DriverName; } ROS_DC_INFO; - -/* EXtended CLip and Window Region Object */ -typedef struct _XCLIPOBJ -{ - WNDOBJ eClipWnd; - PVOID pClipRgn; /* prgnRao_ or (prgnVis_ if (prgnRao_ == z)) */ - DWORD Unknown1[16]; - DWORD nComplexity; /* count/mode based on # of rect in regions scan. */ - PVOID pUnknown; /* UnK pointer to a large drawing structure. */ - /* We will use it for CombinedClip ptr. */ -} XCLIPOBJ, *PXCLIPOBJ; typedef struct _DCLEVEL { @@ -163,7 +153,7 @@ VOID FASTCALL DC_UpdateXforms(PDC dc); BOOL FASTCALL DC_InvertXform(const XFORM *xformSrc, XFORM *xformDest); VOID FASTCALL DC_vUpdateViewportExt(PDC pdc); -VOID FASTCALL DC_vCopyState(PDC pdcSrc, PDC pdcDst); +VOID FASTCALL DC_vCopyState(PDC pdcSrc, PDC pdcDst, BOOL to); VOID FASTCALL DC_vUpdateFillBrush(PDC pdc); VOID FASTCALL DC_vUpdateLineBrush(PDC pdc); VOID FASTCALL DC_vUpdateTextBrush(PDC pdc); Modified: trunk/reactos/subsystems/win32/win32k/include/engobjects.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/engobjects.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/include/engobjects.h [iso-8859-1] Mon Jan 25 02:33:01 2010 @@ -42,6 +42,34 @@ ---------------------------------------------------------------------------*/ +/* EXtended CLip and Window Region Object */ +typedef struct _XCLIPOBJ +{ + WNDOBJ; + PVOID pClipRgn; /* prgnRao_ or (prgnVis_ if (prgnRao_ == z)) */ + RECTL rclClipRgn; + PVOID pscanClipRgn; /* Ptr to regions rect buffer based on iDirection. */ + DWORD cScan; + DWORD reserved; + ULONG ulBSize; + LONG lscnSize; + ULONG ulObjSize; + ULONG iDirection; + ULONG ulClipType; + DWORD reserved1; + LONG lUpDown; + DWORD reserved2; + BOOL bShouldDoAll; + DWORD nComplexity; /* count/mode based on # of rect in regions scan. */ + PVOID pDDA; /* Pointer to a large drawing structure. */ +} XCLIPOBJ, *PXCLIPOBJ; +/* + EngCreateClip allocates XCLIPOBJ and RGNOBJ, pco->co.pClipRgn = &pco->ro. + { + XCLIPOBJ co; + RGNOBJ ro; + } + */ typedef struct _CLIPGDI { CLIPOBJ ClipObj; ULONG EnumPos; Modified: trunk/reactos/subsystems/win32/win32k/include/region.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/region.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/include/region.h [iso-8859-1] Mon Jan 25 02:33:01 2010 @@ -27,6 +27,7 @@ #define REGION_UnlockRgn(pRgn) GDIOBJ_UnlockObjByPtr((POBJ)pRgn) PROSRGNDATA FASTCALL REGION_AllocRgnWithHandle(INT n); +PROSRGNDATA FASTCALL REGION_AllocUserRgnWithHandle(INT n); VOID FASTCALL REGION_UnionRectWithRgn(ROSRGNDATA *rgn, const RECTL *rect); INT FASTCALL REGION_GetRgnBox(PROSRGNDATA Rgn, RECTL *pRect); BOOL FASTCALL REGION_RectInRegion(PROSRGNDATA Rgn, const RECTL *rc); @@ -44,15 +45,19 @@ INT APIENTRY IntGdiGetRgnBox(HRGN, RECTL*); BOOL FASTCALL IntGdiPaintRgn(PDC, HRGN ); HRGN FASTCALL IntCreatePolyPolygonRgn(PPOINT, PULONG, INT, INT); +INT FASTCALL IntGdiOffsetRgn(PROSRGNDATA,INT,INT); INT FASTCALL IntGdiCombineRgn(PROSRGNDATA, PROSRGNDATA, PROSRGNDATA, INT); INT FASTCALL REGION_Complexity(PROSRGNDATA); -PROSRGNDATA FASTCALL IntGdiCreateRectRgn(INT, INT, INT, INT); PROSRGNDATA FASTCALL RGNOBJAPI_Lock(HRGN,PRGN_ATTR *); VOID FASTCALL RGNOBJAPI_Unlock(PROSRGNDATA); HRGN FASTCALL IntSysCreateRectRgn(INT,INT,INT,INT); +PROSRGNDATA FASTCALL IntSysCreateRectpRgn(INT,INT,INT,INT); #define IntSysCreateRectRgnIndirect(prc) \ IntSysCreateRectRgn((prc)->left, (prc)->top, (prc)->right, (prc)->bottom) +#define IntSysCreateRectpRgnIndirect(prc) \ + IntSysCreateRectpRgn((prc)->left, (prc)->top, (prc)->right, (prc)->bottom) + #endif /* not __WIN32K_REGION_H */ Modified: trunk/reactos/subsystems/win32/win32k/ntuser/windc.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/windc.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/windc.c [iso-8859-1] Mon Jan 25 02:33:01 2010 @@ -49,7 +49,7 @@ defaultDCstate = ExAllocatePoolWithTag(PagedPool, sizeof(DC), TAG_DC); RtlZeroMemory(defaultDCstate, sizeof(DC)); defaultDCstate->pdcattr = &defaultDCstate->dcattr; - DC_vCopyState(dc, defaultDCstate); + DC_vCopyState(dc, defaultDCstate, TRUE); DC_UnlockDc( dc ); } return hDC; Modified: trunk/reactos/subsystems/win32/win32k/objects/cliprgn.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/cliprgn.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/cliprgn.c [iso-8859-1] Mon Jan 25 02:33:01 2010 @@ -27,9 +27,27 @@ { PROSRGNDATA CombinedRegion; - if (!Dc->rosdc.hVisRgn) - { - DPRINT1("Warning, hVisRgn is NULL!\n"); + /* Experiment with API region based on wine.. */ + if (Dc->rosdc.hClipRgn && Dc->dclevel.prgnMeta) + { + PROSRGNDATA pClipRgn; + + if ((pClipRgn = RGNOBJAPI_Lock(Dc->rosdc.hClipRgn, NULL))) + { + if (!Dc->prgnAPI) Dc->prgnAPI = IntSysCreateRectpRgn( 0, 0, 0, 0 ); + + IntGdiCombineRgn( Dc->prgnAPI, + pClipRgn, + Dc->dclevel.prgnMeta, + RGN_AND ); + RGNOBJAPI_Unlock(pClipRgn); + } + } + else + { + if (Dc->prgnAPI) + GreDeleteObject(((PROSRGNDATA)Dc->prgnAPI)->BaseObject.hHmgr); + Dc->prgnAPI = NULL; } if (Dc->rosdc.hGCClipRgn == NULL) @@ -37,8 +55,9 @@ if (Dc->rosdc.hClipRgn == NULL) NtGdiCombineRgn(Dc->rosdc.hGCClipRgn, Dc->rosdc.hVisRgn, 0, RGN_COPY); - else // FYI: Vis == NULL! source of "IntGdiCombineRgn requires hSrc2 != NULL for combine mode 1!" + else NtGdiCombineRgn(Dc->rosdc.hGCClipRgn, Dc->rosdc.hClipRgn, Dc->rosdc.hVisRgn, RGN_AND); + NtGdiOffsetRgn(Dc->rosdc.hGCClipRgn, Dc->ptlDCOrig.x, Dc->ptlDCOrig.y); if((CombinedRegion = RGNOBJAPI_Lock(Dc->rosdc.hGCClipRgn, NULL))) @@ -94,6 +113,7 @@ NtGdiOffsetRgn(dc->rosdc.hVisRgn, -dc->ptlDCOrig.x, -dc->ptlDCOrig.y); CLIPPING_UpdateGCRegion(dc); } + DC_UnlockDc(dc); return retval; @@ -146,7 +166,6 @@ else NtGdiCombineRgn(dc->rosdc.hClipRgn, dc->rosdc.hClipRgn, hrgn, fnMode); } - return CLIPPING_UpdateGCRegion(dc); } @@ -176,13 +195,47 @@ PROSRGNDATA Rgn; INT retval; PDC dc; + HRGN hRgnNew, hRgn = NULL; if (!(dc = DC_LockDc(hDC))) { return ERROR; } - if (!(Rgn = RGNOBJAPI_Lock(dc->rosdc.hGCClipRgn, NULL))) + if (dc->prgnAPI) // APIRGN + { + hRgn = ((PROSRGNDATA)dc->prgnAPI)->BaseObject.hHmgr; + } + else if (dc->dclevel.prgnMeta) // METARGN + { + hRgn = ((PROSRGNDATA)dc->dclevel.prgnMeta)->BaseObject.hHmgr; + } + else + { + hRgn = dc->rosdc.hClipRgn; // CLIPRGN + } + + if (hRgn) + { + hRgnNew = IntSysCreateRectRgn( 0, 0, 0, 0 ); + + NtGdiCombineRgn(hRgnNew, dc->rosdc.hVisRgn, hRgn, RGN_AND); + + if (!(Rgn = RGNOBJAPI_Lock(hRgnNew, NULL))) + { + DC_UnlockDc(dc); + return ERROR; + } + + retval = REGION_GetRgnBox(Rgn, rc); + + REGION_FreeRgnByHandle(hRgnNew); + RGNOBJAPI_Unlock(Rgn); + DC_UnlockDc(dc); + return retval; + } + + if (!(Rgn = RGNOBJAPI_Lock(dc->rosdc.hVisRgn, NULL))) { DC_UnlockDc(dc); return ERROR; @@ -435,7 +488,7 @@ { if ( pDC->dclevel.prgnClip ) { - TempRgn = IntSysCreateRectRgn(0,0,0,0); + TempRgn = IntSysCreateRectpRgn(0,0,0,0); if (TempRgn) { Ret = IntGdiCombineRgn( TempRgn, @@ -479,7 +532,6 @@ return Ret; } - int APIENTRY NtGdiSetMetaRgn(HDC hDC) { INT Ret; @@ -501,56 +553,74 @@ { CLIPOBJ * co; - if (!pDC->prgnVis) return 0; + /* Must have VisRgn set to a valid state! */ + if (!pDC->prgnVis) return ERROR; if (pDC->prgnAPI) { REGION_Delete(pDC->prgnAPI); - pDC->prgnAPI = IntSysCreateRectRgn(0,0,0,0); + pDC->prgnAPI = IntSysCreateRectpRgn(0,0,0,0); } if (pDC->prgnRao) { REGION_Delete(pDC->prgnRao); - pDC->prgnRao = IntSysCreateRectRgn(0,0,0,0); + pDC->prgnRao = IntSysCreateRectpRgn(0,0,0,0); } if (pDC->dclevel.prgnMeta && pDC->dclevel.prgnClip) { IntGdiCombineRgn( pDC->prgnAPI, - pDC->dclevel.prgnClip, - pDC->dclevel.prgnMeta, - RGN_AND); + pDC->dclevel.prgnClip, + pDC->dclevel.prgnMeta, + RGN_AND ); } else { if (pDC->dclevel.prgnClip) + { IntGdiCombineRgn( pDC->prgnAPI, - pDC->dclevel.prgnClip, - NULL, - RGN_COPY); + pDC->dclevel.prgnClip, + NULL, + RGN_COPY ); + } else if (pDC->dclevel.prgnMeta) + { IntGdiCombineRgn( pDC->prgnAPI, - pDC->dclevel.prgnMeta, - NULL, - RGN_COPY); + pDC->dclevel.prgnMeta, + NULL, + RGN_COPY ); + } } IntGdiCombineRgn( pDC->prgnRao, pDC->prgnVis, pDC->prgnAPI, - RGN_AND); - - RtlCopyMemory(&pDC->erclClip, &((PROSRGNDATA)pDC->prgnRao)->rdh.rcBound , sizeof(RECTL)); + RGN_AND ); + + RtlCopyMemory( &pDC->erclClip, + &((PROSRGNDATA)pDC->prgnRao)->rdh.rcBound, + sizeof(RECTL)); + pDC->fs &= ~DC_FLAG_DIRTY_RAO; -// if (Dc->CombinedClip != NULL) IntEngDeleteClipRegion(Dc->CombinedClip); - + IntGdiOffsetRgn(pDC->prgnRao, pDC->ptlDCOrig.x, pDC->ptlDCOrig.y); + + if (pDC->rosdc.CombinedClip != NULL) + IntEngDeleteClipRegion(pDC->rosdc.CombinedClip); + + // pDC->co should be used. Example, CLIPOBJ_cEnumStart uses XCLIPOBJ to build + // the rects from region objects rects in pClipRgn->Buffer. + // With pDC->co.pClipRgn->Buffer, + // pDC->co.pClipRgn = pDC->prgnRao ? pDC->prgnRao : pDC->prgnVis; + co = IntEngCreateClipRegion( ((PROSRGNDATA)pDC->prgnRao)->rdh.nCount, - ((PROSRGNDATA)pDC->prgnRao)->Buffer, - &pDC->erclClip); - - return REGION_Complexity(pDC->prgnRao); + ((PROSRGNDATA)pDC->prgnRao)->Buffer, + &pDC->erclClip); + + pDC->rosdc.CombinedClip = co; + + return IntGdiOffsetRgn(pDC->prgnRao, -pDC->ptlDCOrig.x, -pDC->ptlDCOrig.y); } /* EOF */ Modified: trunk/reactos/subsystems/win32/win32k/objects/dclife.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/dclife.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/dclife.c [iso-8859-1] Mon Jan 25 02:33:01 2010 @@ -468,7 +468,7 @@ defaultDCstate->pdcattr = &defaultDCstate->dcattr; hsurf = (HSURF)PrimarySurface.pSurface; // HAX² defaultDCstate->dclevel.pSurface = SURFACE_ShareLockSurface(hsurf); - DC_vCopyState(dc, defaultDCstate); + DC_vCopyState(dc, defaultDCstate, TRUE); DC_UnlockDc(dc); } return hDC; @@ -538,6 +538,14 @@ if (DCToDelete->rosdc.hGCClipRgn) { GreDeleteObject(DCToDelete->rosdc.hGCClipRgn); + } + if (DCToDelete->dclevel.prgnMeta) + { + GreDeleteObject(((PROSRGNDATA)DCToDelete->dclevel.prgnMeta)->BaseObject.hHmgr); + } + if (DCToDelete->prgnAPI) + { + GreDeleteObject(((PROSRGNDATA)DCToDelete->prgnAPI)->BaseObject.hHmgr); } PATH_Delete(DCToDelete->dclevel.hPath); Modified: trunk/reactos/subsystems/win32/win32k/objects/dcstate.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/dcstate.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/dcstate.c [iso-8859-1] Mon Jan 25 02:33:01 2010 @@ -13,16 +13,13 @@ VOID FASTCALL -DC_vCopyState(PDC pdcSrc, PDC pdcDst) +DC_vCopyState(PDC pdcSrc, PDC pdcDst, BOOL To) { /* Copy full DC attribute */ *pdcDst->pdcattr = *pdcSrc->pdcattr; - - /* Get/SetDCState() don't change hVisRgn field ("Undoc. Windows" p.559). */ - /* The VisRectRegion field needs to be set to a valid state */ - + /* Mark some fields as dirty */ - pdcDst->pdcattr->ulDirty_ |= 0x0012001f; + pdcDst->pdcattr->ulDirty_ |= 0x0012001f; // Note: Use if, To is FALSE.... /* Copy DC level */ pdcDst->dclevel.pColorSpace = pdcSrc->dclevel.pColorSpace; @@ -53,8 +50,20 @@ pdcDst->rosdc.bitsPerPixel = pdcSrc->rosdc.bitsPerPixel; } - GdiExtSelectClipRgn(pdcDst, pdcSrc->rosdc.hClipRgn, RGN_COPY); - + /* Get/SetDCState() don't change hVisRgn field ("Undoc. Windows" p.559). */ + if (To) // Copy "To" SaveDC state. + { + if (pdcSrc->rosdc.hClipRgn) + { + pdcDst->rosdc.hClipRgn = IntSysCreateRectRgn(0, 0, 0, 0); + NtGdiCombineRgn(pdcDst->rosdc.hClipRgn, pdcSrc->rosdc.hClipRgn, 0, RGN_COPY); + } + // FIXME! Handle prgnMeta! + } + else // Copy "!To" RestoreDC state. + { /* The VisRectRegion field needs to be set to a valid state */ + GdiExtSelectClipRgn(pdcDst, pdcSrc->rosdc.hClipRgn, RGN_COPY); + } } @@ -66,7 +75,7 @@ dc = DC_LockDc(hDC); if (!dc) return FALSE; // Clean the DC - if (defaultDCstate) DC_vCopyState(defaultDCstate, dc); + if (defaultDCstate) DC_vCopyState(defaultDCstate, dc, FALSE); if (dc->dctype != DC_TYPE_MEMORY) { @@ -101,7 +110,6 @@ { PDC pdc, pdcSave; HDC hdcSave; - PEPROCESS pepCurrentProcess; DPRINT("NtGdiRestoreDC(%lx, %d)\n", hdc, iSaveLevel); @@ -129,16 +137,13 @@ return FALSE; } - /* Get current process */ - pepCurrentProcess = PsGetCurrentProcess(); - /* Loop the save levels */ while (pdc->dclevel.lSaveDepth > iSaveLevel) { hdcSave = pdc->dclevel.hdcSave; /* Set us as the owner */ - if (!GDIOBJ_SetOwnership(hdcSave, pepCurrentProcess)) + if (!IntGdiSetDCOwnerEx(hdcSave, GDI_OBJ_HMGR_POWNED, FALSE )) { /* Could not get ownership. That's bad! */ DPRINT1("Could not get ownership of saved DC (%p) for dc %p!\n", @@ -167,7 +172,7 @@ if (pdc->dclevel.lSaveDepth == iSaveLevel) { /* Copy the state back */ - DC_vCopyState(pdcSave, pdc); + DC_vCopyState(pdcSave, pdc, FALSE); // Restore Path by removing it, if the Save flag is set. // BeginPath will takecare of the rest. @@ -177,6 +182,13 @@ pdc->dclevel.hPath = 0; pdc->dclevel.flPath &= ~DCPATH_SAVE; } + // Attempt to plug the leak! + if (pdcSave->rosdc.hClipRgn) + { + DPRINT("Have hClipRgn!\n"); + REGION_FreeRgnByHandle(pdcSave->rosdc.hClipRgn); + } + // FIXME! Handle prgnMeta! } /* Delete the saved dc */ @@ -220,12 +232,12 @@ } hdcSave = pdcSave->BaseObject.hHmgr; + /* Copy the current state */ + DC_vCopyState(pdc, pdcSave, TRUE); + /* Make it a kernel handle (FIXME: windows handles this different, see wiki)*/ - GDIOBJ_SetOwnership(hdcSave, NULL); - - /* Copy the current state */ - DC_vCopyState(pdc, pdcSave); + IntGdiSetDCOwnerEx(hdcSave, GDI_OBJ_HMGR_NONE, FALSE); /* Copy path. FIXME: why this way? */ pdcSave->dclevel.hPath = pdc->dclevel.hPath; Modified: trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c [iso-8859-1] Mon Jan 25 02:33:01 2010 @@ -84,6 +84,59 @@ /** INTERNAL FUNCTIONS ********************************************************/ +// Audit Functions +int tDC = 0; +int tBRUSH = 0; +int tBITMAP = 0; +int tFONT = 0; +int tRGN = 0; + +VOID +AllocTypeDataDump(INT TypeInfo) +{ + switch( TypeInfo & GDI_HANDLE_TYPE_MASK ) + { + case GDILoObjType_LO_BRUSH_TYPE: + tBRUSH++; + break; + case GDILoObjType_LO_DC_TYPE: + tDC++; + break; + case GDILoObjType_LO_BITMAP_TYPE: + tBITMAP++; + break; + case GDILoObjType_LO_FONT_TYPE: + tFONT++; + break; + case GDILoObjType_LO_REGION_TYPE: + tRGN++; + break; + } +} + +VOID +DeAllocTypeDataDump(INT TypeInfo) +{ + switch( TypeInfo & GDI_HANDLE_TYPE_MASK ) + { + case GDILoObjType_LO_BRUSH_TYPE: + tBRUSH--; + break; + case GDILoObjType_LO_DC_TYPE: + tDC--; + break; + case GDILoObjType_LO_BITMAP_TYPE: + tBITMAP--; + break; + case GDILoObjType_LO_FONT_TYPE: + tFONT--; + break; + case GDILoObjType_LO_REGION_TYPE: + tRGN--; + break; + } +} + /* * Dummy GDI Cleanup Callback */ @@ -361,6 +414,7 @@ if (W32Process && W32Process->GDIHandleCount >= 0x2710) { DPRINT1("Too many objects for process!!!\n"); + DPRINT1("DC %d BRUSH %d BITMAP %d FONT %d RGN %d\n",tDC,tBRUSH,tBITMAP,tFONT,tRGN); GDIDBG_DUMPHANDLETABLE(); return NULL; } @@ -417,6 +471,8 @@ newObject->ulShareCount = 0; newObject->cExclusiveLock = 1; newObject->Tid = Thread; + + AllocTypeDataDump(TypeInfo); /* unlock the entry */ (void)InterlockedExchangePointer((PVOID*)&Entry->ProcessId, CurrentProcessId); @@ -564,6 +620,8 @@ /* call the cleanup routine. */ TypeIndex = GDI_OBJECT_GET_TYPE_INDEX(HandleType); Ret = ObjTypeInfo[TypeIndex].CleanupProc(Object); + + DeAllocTypeDataDump(HandleType); /* Now it's time to free the memory */ GDIOBJ_FreeObj(Object, TypeIndex); @@ -702,7 +760,7 @@ ((PRGN_ATTR)pAttr)->AttrFlags |= ATTR_CACHED; hPtr[Number] = Handle; GdiHandleCache->ulNumHandles[oType]++; - DPRINT("Put Handle Count %d\n", GdiHandleCache->ulNumHandles[oType]); + DPRINT1("Put Handle Count %d PEB 0x%x\n", GdiHandleCache->ulNumHandles[oType], NtCurrentTeb()->ProcessEnvironmentBlock); Ret = TRUE; } } Modified: trunk/reactos/subsystems/win32/win32k/objects/region.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/region.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/region.c [iso-8859-1] Mon Jan 25 02:33:01 2010 @@ -2035,8 +2035,6 @@ { HRGN hReg; PROSRGNDATA pReg; - INT Index; - PGDI_TABLE_ENTRY Entry; pReg = (PROSRGNDATA)GDIOBJ_AllocObjWithHandle(GDI_OBJECT_TYPE_REGION); if(!pReg) @@ -2062,10 +2060,6 @@ return NULL; } } - - Index = GDI_HANDLE_GET_INDEX(hReg); - Entry = &GdiHandleTable->Entries[Index]; - Entry->UserData = AllocateObjectAttr(); EMPTY_REGION(pReg); pReg->rdh.dwSize = sizeof(RGNDATAHEADER); @@ -2073,6 +2067,27 @@ pReg->rdh.nRgnSize = nReg * sizeof(RECT); return pReg; +} + +// +// Allocate User Space Region Handle. +// +PROSRGNDATA +FASTCALL +REGION_AllocUserRgnWithHandle(INT nRgn) +{ + PROSRGNDATA pRgn; + INT Index; + PGDI_TABLE_ENTRY Entry; + + pRgn = REGION_AllocRgnWithHandle(nRgn); + if (pRgn) + { + Index = GDI_HANDLE_GET_INDEX(pRgn->BaseObject.hHmgr); + Entry = &GdiHandleTable->Entries[Index]; + Entry->UserData = AllocateObjectAttr(); + } + return pRgn; } PROSRGNDATA @@ -2183,23 +2198,29 @@ // // System Region Functions // -HRGN +PROSRGNDATA FASTCALL -IntSysCreateRectRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect) +IntSysCreateRectpRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect) { PROSRGNDATA pRgn; - HRGN hRgn; pRgn = (PROSRGNDATA)GDIOBJ_AllocObjWithHandle(GDI_OBJECT_TYPE_REGION); if (!pRgn) { return NULL; } - hRgn = pRgn->BaseObject.hHmgr; pRgn->Buffer = &pRgn->rdh.rcBound; REGION_SetRectRgn(pRgn, LeftRect, TopRect, RightRect, BottomRect); REGION_UnlockRgn(pRgn); - return hRgn; + return pRgn; +} + +HRGN +FASTCALL +IntSysCreateRectRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect) +{ + PROSRGNDATA pRgn = IntSysCreateRectpRgn(LeftRect,TopRect,RightRect,BottomRect); + return (pRgn ? pRgn->BaseObject.hHmgr : NULL); } BOOL INTERNAL_CALL @@ -2337,22 +2358,6 @@ return result; } -PROSRGNDATA -FASTCALL -IntGdiCreateRectRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect) -{ - PROSRGNDATA pRgn; - - if (!(pRgn = REGION_AllocRgnWithHandle(1))) return NULL; - - REGION_SetRectRgn(pRgn, LeftRect, TopRect, RightRect, BottomRect); - RGNOBJAPI_Unlock(pRgn); - // Return pointer with Share locks. - pRgn = GDIOBJ_ShareLockObj(pRgn->BaseObject.hHmgr, GDI_OBJECT_TYPE_REGION); - - return pRgn; -} - INT FASTCALL REGION_GetRgnBox( PROSRGNDATA Rgn, @@ -2545,6 +2550,40 @@ { EMPTY_REGION(rgn); } +} + +INT +FASTCALL +IntGdiOffsetRgn( + PROSRGNDATA rgn, + INT XOffset, + INT YOffset ) +{ + if (XOffset || YOffset) + { + int nbox = rgn->rdh.nCount; + PRECTL pbox = rgn->Buffer; + + if (nbox && pbox) + { + while (nbox--) + { + pbox->left += XOffset; + pbox->right += XOffset; + pbox->top += YOffset; + pbox->bottom += YOffset; + pbox++; + } + if (rgn->Buffer != &rgn->rdh.rcBound) + { + rgn->rdh.rcBound.left += XOffset; + rgn->rdh.rcBound.right += XOffset; + rgn->rdh.rcBound.top += YOffset; + rgn->rdh.rcBound.bottom += YOffset; + } + } + } + return REGION_Complexity(rgn); } /*********************************************************************** @@ -3011,7 +3050,7 @@ if (mode == 0 || mode > 2) return 0; - if (!(region = REGION_AllocRgnWithHandle(nbpolygons))) + if (!(region = REGION_AllocUserRgnWithHandle(nbpolygons))) return 0; hrgn = region->BaseObject.hHmgr; @@ -3248,7 +3287,7 @@ HRGN hRgn; /* Allocate region data structure with space for 1 RECTL */ - if (!(pRgn = REGION_AllocRgnWithHandle(1))) + if (!(pRgn = REGION_AllocUserRgnWithHandle(1))) { SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY); return NULL; @@ -3308,7 +3347,7 @@ /* Create region */ d = (ellipse_height < 128) ? ((3 * ellipse_height) >> 2) : 64; - if (!(obj = REGION_AllocRgnWithHandle(d))) return 0; + if (!(obj = REGION_AllocUserRgnWithHandle(d))) return 0; hrgn = obj->BaseObject.hHmgr; /* Ellipse algorithm, based on an article by K. Porter */ @@ -3473,7 +3512,7 @@ return NULL; } - Region = REGION_AllocRgnWithHandle(nCount); + Region = REGION_AllocUserRgnWithHandle(nCount); if (Region == NULL) { @@ -3640,10 +3679,10 @@ if (pDC->dclevel.prgnMeta) hSrc = ((PROSRGNDATA)pDC->dclevel.prgnMeta)->BaseObject.hHmgr; break; case APIRGN: - hSrc = pDC->rosdc.hClipRgn; -// if (pDC->prgnAPI) hSrc = ((PROSRGNDATA)pDC->prgnAPI)->BaseObject.hHmgr; + if (pDC->prgnAPI) hSrc = ((PROSRGNDATA)pDC->prgnAPI)->BaseObject.hHmgr; // else if (pDC->dclevel.prgnClip) hSrc = ((PROSRGNDATA)pDC->dclevel.prgnClip)->BaseObject.hHmgr; -// else if (pDC->dclevel.prgnMeta) hSrc = ((PROSRGNDATA)pDC->dclevel.prgnMeta)->BaseObject.hHmgr; + else if (pDC->rosdc.hClipRgn) hSrc = pDC->rosdc.hClipRgn; + else if (pDC->dclevel.prgnMeta) hSrc = ((PROSRGNDATA)pDC->dclevel.prgnMeta)->BaseObject.hHmgr; break; case SYSRGN: hSrc = pDC->rosdc.hVisRgn; @@ -3767,31 +3806,8 @@ return ERROR; } - if (XOffset || YOffset) - { - int nbox = rgn->rdh.nCount; - PRECTL pbox = rgn->Buffer; - - if (nbox && pbox) - { - while (nbox--) - { - pbox->left += XOffset; - pbox->right += XOffset; - pbox->top += YOffset; - pbox->bottom += YOffset; - pbox++; - } - if (rgn->Buffer != &rgn->rdh.rcBound) - { - rgn->rdh.rcBound.left += XOffset; - rgn->rdh.rcBound.right += XOffset; - rgn->rdh.rcBound.top += YOffset; - rgn->rdh.rcBound.bottom += YOffset; - } - } - } - ret = REGION_Complexity(rgn); + ret = IntGdiOffsetRgn(rgn, XOffset, YOffset); + RGNOBJAPI_Unlock(rgn); return ret; }
14 years, 9 months
1
0
0
0
[sir_richard] 45241: [HAL]: Implement HalRequestSoftwareInterrupt in C instead of ASM. Remove deprecated ASM code that was unused.
by sir_richard@svn.reactos.org
Author: sir_richard Date: Mon Jan 25 02:26:53 2010 New Revision: 45241 URL:
http://svn.reactos.org/svn/reactos?rev=45241&view=rev
Log: [HAL]: Implement HalRequestSoftwareInterrupt in C instead of ASM. Remove deprecated ASM code that was unused. Modified: trunk/reactos/hal/halx86/generic/irq.S trunk/reactos/hal/halx86/generic/pic.c Modified: trunk/reactos/hal/halx86/generic/irq.S URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/irq.S?r…
============================================================================== --- trunk/reactos/hal/halx86/generic/irq.S [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/irq.S [iso-8859-1] Mon Jan 25 02:26:53 2010 @@ -50,40 +50,6 @@ .long 0xFFFFFFFB /* IRQL 30 */ .long 0xFFFFFFFB /* IRQL 31 */ -FindHigherIrqlMask: - .long 0xFFFFFFFE /* IRQL 0 */ - .long 0xFFFFFFFC /* IRQL 1 */ - .long 0xFFFFFFF8 /* IRQL 2 */ - .long 0xFFFFFFF0 /* IRQL 3 */ - .long 0x7FFFFF0 /* IRQL 4 */ - .long 0x3FFFFF0 /* IRQL 5 */ - .long 0x1FFFFF0 /* IRQL 6 */ - .long 0x0FFFFF0 /* IRQL 7 */ - .long 0x7FFFF0 /* IRQL 8 */ - .long 0x3FFFF0 /* IRQL 9 */ - .long 0x1FFFF0 /* IRQL 10 */ - .long 0x0FFFF0 /* IRQL 11 */ - .long 0x7FFF0 /* IRQL 12 */ - .long 0x3FFF0 /* IRQL 13 */ - .long 0x1FFF0 /* IRQL 14 */ - .long 0x0FFF0 /* IRQL 15 */ - .long 0x7FF0 /* IRQL 16 */ - .long 0x3FF0 /* IRQL 17 */ - .long 0x1FF0 /* IRQL 18 */ - .long 0x1FF0 /* IRQL 19 */ - .long 0x17F0 /* IRQL 20 */ - .long 0x13F0 /* IRQL 21 */ - .long 0x11F0 /* IRQL 22 */ - .long 0x10F0 /* IRQL 23 */ - .long 0x1070 /* IRQL 24 */ - .long 0x1030 /* IRQL 25 */ - .long 0x1010 /* IRQL 26 */ - .long 0x10 /* IRQL 27 */ - .long 0 /* IRQL 28 */ - .long 0 /* IRQL 29 */ - .long 0 /* IRQL 30 */ - .long 0 /* IRQL 31 */ - SWInterruptLookUpTable: .byte PASSIVE_LEVEL /* IRR 0 */ .byte PASSIVE_LEVEL /* IRR 1 */ @@ -109,75 +75,6 @@ /* FUNCTIONS *****************************************************************/ -/* HAL interrupt handlers */ -GENERATE_HAL_INT_HANDLERS - -.globl _HalpHardwareInterruptLevel -.func HalpHardwareInterruptLevel -_HalpHardwareInterruptLevel: - - /* Get IRQL and check for pending interrupts */ - mov eax, PCR[KPCR_IRQL] - mov ecx, PCR[KPCR_IRR] - and ecx, FindHigherIrqlMask[eax*4] - jz NothingHardware - - /* Check the active IRR */ - test dword ptr PCR[KPCR_IRR_ACTIVE], 0xFFFFFFF0 - jnz NothingHardware - - /* Check for pending software interrupts */ - mov eax, ecx - bsr ecx, eax - mov eax, 1 - shl eax, cl - - /* Clear IRR */ - xor PCR[KPCR_IRR], eax - - /* Now dispatch the interrupt */ - call SWInterruptHandlerTable[ecx*4] - -NothingHardware: - ret -.endfunc - -.globl @HalRequestSoftwareInterrupt@4 -.func @HalRequestSoftwareInterrupt@4, @HalRequestSoftwareInterrupt@4 -@HalRequestSoftwareInterrupt@4: - - /* Get IRR mask */ - mov eax, 1 - shl eax, cl - - /* Disable interrupts */ - pushf - cli - - /* Set IRR and get IRQL */ - or PCR[KPCR_IRR], eax - mov ecx, PCR[KPCR_IRQL] - - /* Get software IRR mask */ - mov eax, PCR[KPCR_IRR] - and eax, 3 - - /* Get highest pending software interrupt and check if it's higher */ - xor edx, edx - mov dl, SWInterruptLookUpTable[eax] - cmp dl, cl - jbe AfterCall - - /* Call the pending interrupt */ - call SWInterruptHandlerTable[edx*4] - -AfterCall: - - /* Retore interrupts and return */ - popf - ret -.endfunc - .globl _HalEndSystemInterrupt@8 .func HalEndSystemInterrupt@8 _HalEndSystemInterrupt@8: Modified: trunk/reactos/hal/halx86/generic/pic.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/pic.c?r…
============================================================================== --- trunk/reactos/hal/halx86/generic/pic.c [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/pic.c [iso-8859-1] Mon Jan 25 02:26:53 2010 @@ -498,6 +498,32 @@ */ VOID FASTCALL +HalRequestSoftwareInterrupt(IN KIRQL Irql) +{ + ULONG EFlags; + PKPCR Pcr = KeGetPcr(); + KIRQL PendingIrql; + + /* Save EFlags and disable interrupts */ + EFlags = __readeflags(); + _disable(); + + /* Mask out the requested bit */ + Pcr->IRR |= (1 << Irql); + + /* Check for pending software interrupts and compare with current IRQL */ + PendingIrql = SWInterruptLookUpTable[Pcr->IRR & 3]; + if (PendingIrql > Pcr->Irql) SWInterruptHandlerTable[PendingIrql](); + + /* Restore interrupt state */ + __writeeflags(EFlags); +} + +/* + * @implemented + */ +VOID +FASTCALL HalClearSoftwareInterrupt(IN KIRQL Irql) { /* Mask out the requested bit */
14 years, 9 months
1
0
0
0
[sir_richard] 45240: [HAL]: KfLowerIrql in C instead of ASM. Add the SWInterruptLookUpTable and SWInterruptHandlerTable to the code and keep the same mechanism as the ASM code used.
by sir_richard@svn.reactos.org
Author: sir_richard Date: Mon Jan 25 02:20:43 2010 New Revision: 45240 URL:
http://svn.reactos.org/svn/reactos?rev=45240&view=rev
Log: [HAL]: KfLowerIrql in C instead of ASM. Add the SWInterruptLookUpTable and SWInterruptHandlerTable to the code and keep the same mechanism as the ASM code used. Modified: trunk/reactos/hal/halx86/generic/irq.S trunk/reactos/hal/halx86/generic/pic.c trunk/reactos/hal/halx86/include/halp.h Modified: trunk/reactos/hal/halx86/generic/irq.S URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/irq.S?r…
============================================================================== --- trunk/reactos/hal/halx86/generic/irq.S [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/irq.S [iso-8859-1] Mon Jan 25 02:20:43 2010 @@ -214,72 +214,6 @@ jmp SWInterruptHandlerTable2[eax*4] .endfunc -.globl @KfLowerIrql@4 -.func @KfLowerIrql@4 -_@KfLowerIrql@4: -@KfLowerIrql@4: - - /* Cleanup IRQL */ - and ecx, 0xFF - - /* Validate IRQL */ - #if DBG - cmp cl, PCR[KPCR_IRQL] - ja InvalidIrql - #endif - - /* Save flags since we'll disable interrupts */ - pushf - cli - - /* Disable interrupts and check if IRQL is below DISPATCH_LEVEL */ - cmp dword ptr PCR[KPCR_IRQL], DISPATCH_LEVEL - jbe SkipMask - - /* Clear interrupt masks since there's a pending hardware interrupt */ - mov eax, KiI8259MaskTable[ecx*4] - or eax, PCR[KPCR_IDR] - out 0x21, al - shr eax, 8 - out 0xA1, al - -SkipMask: - - /* Set the new IRQL and check if there's a pending software interrupt */ - mov PCR[KPCR_IRQL], ecx - mov eax, PCR[KPCR_IRR] - mov al, SWInterruptLookUpTable[eax] - cmp al, cl - ja DoCall3 - - /* Restore interrupts and return */ - popf - ret - -#if DBG -InvalidIrql: - /* Set HIGH_LEVEL */ - mov eax, PCR[KPCR_IRQL] - mov dword ptr PCR[KPCR_IRQL], HIGH_LEVEL - - /* Bugcheck the system */ - push 3 - push 0 - push ecx - push eax - push IRQL_NOT_LESS_OR_EQUAL - call _KeBugCheckEx@20 -#endif - -DoCall3: - /* There is, call it */ - call SWInterruptHandlerTable[eax*4] - - /* Restore interrupts and return */ - popf - ret -.endfunc - .globl _HalpApcInterrupt .func HalpApcInterrupt TRAP_FIXUPS hapc_a, hapc_t, DoFixupV86, DoFixupAbios Modified: trunk/reactos/hal/halx86/generic/pic.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/pic.c?r…
============================================================================== --- trunk/reactos/hal/halx86/generic/pic.c [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/pic.c [iso-8859-1] Mon Jan 25 02:20:43 2010 @@ -184,6 +184,27 @@ #endif }; +/* Denotes minimum required IRQL before we can process pending SW interrupts */ +KIRQL SWInterruptLookUpTable[8] = +{ + PASSIVE_LEVEL, /* IRR 0 */ + PASSIVE_LEVEL, /* IRR 1 */ + APC_LEVEL, /* IRR 2 */ + APC_LEVEL, /* IRR 3 */ + DISPATCH_LEVEL, /* IRR 4 */ + DISPATCH_LEVEL, /* IRR 5 */ + DISPATCH_LEVEL, /* IRR 6 */ + DISPATCH_LEVEL /* IRR 7 */ +}; + +/* Handlers for pending software interrupts */ +PHAL_SW_INTERRUPT_HANDLER SWInterruptHandlerTable[3] = +{ + KiUnexpectedInterrupt, + HalpApcInterrupt, + HalpDispatchInterrupt +}; + USHORT HalpEisaELCR; /* FUNCTIONS ******************************************************************/ @@ -418,6 +439,58 @@ return CurrentIrql; } + +/* + * @implemented + */ +VOID +FASTCALL +KfLowerIrql(IN KIRQL OldIrql) +{ + ULONG EFlags; + KIRQL PendingIrql; + PKPCR Pcr = KeGetPcr(); + PIC_MASK Mask; + +#ifdef IRQL_DEBUG + /* Validate correct lower */ + if (OldIrql > Pcr->Irql) + { + /* Crash system */ + KIRQL CurrentIrql = Pcr->Irql; + Pcr->Irql = HIGH_LEVEL; + KeBugCheckEx(IRQL_NOT_LESS_OR_EQUAL, + CurrentIrql, + OldIrql, + 0, + 3); + } +#endif + + /* Save EFlags and disable interrupts */ + EFlags = __readeflags(); + _disable(); + + /* Check if currentl IRQL affects hardware state */ + if (Pcr->Irql > DISPATCH_LEVEL) + { + /* Set new PIC mask */ + Mask.Both = KiI8259MaskTable[OldIrql] | Pcr->IDR; + __outbyte(PIC1_DATA_PORT, Mask.Master); + __outbyte(PIC2_DATA_PORT, Mask.Slave); + } + + /* Set old IRQL */ + Pcr->Irql = OldIrql; + + /* Check for pending software interrupts and compare with current IRQL */ + PendingIrql = SWInterruptLookUpTable[Pcr->IRR]; + if (PendingIrql > OldIrql) SWInterruptHandlerTable[PendingIrql](); + + /* Restore interrupt state */ + __writeeflags(EFlags); +} + /* SOFTWARE INTERRUPTS ********************************************************/ /* Modified: trunk/reactos/hal/halx86/include/halp.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/include/halp.h?…
============================================================================== --- trunk/reactos/hal/halx86/include/halp.h [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/include/halp.h [iso-8859-1] Mon Jan 25 02:20:43 2010 @@ -459,6 +459,8 @@ /* pic.c */ VOID NTAPI HalpInitializePICs(IN BOOLEAN EnableInterrupts); +VOID HalpApcInterrupt(VOID); +VOID HalpDispatchInterrupt(VOID); /* udelay.c */ VOID NTAPI HalpInitializeClock(VOID);
14 years, 9 months
1
0
0
0
[sir_richard] 45239: [HAL]: Okay, this one was my fault, forgot to built the nasty-ass HALMPS. Move the CMOS lock routines to the shared CMOS file.
by sir_richard@svn.reactos.org
Author: sir_richard Date: Mon Jan 25 00:57:09 2010 New Revision: 45239 URL:
http://svn.reactos.org/svn/reactos?rev=45239&view=rev
Log: [HAL]: Okay, this one was my fault, forgot to built the nasty-ass HALMPS. Move the CMOS lock routines to the shared CMOS file. Modified: trunk/reactos/hal/halx86/generic/cmos.c trunk/reactos/hal/halx86/generic/spinlock.c trunk/reactos/hal/halx86/include/halp.h Modified: trunk/reactos/hal/halx86/generic/cmos.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/cmos.c?…
============================================================================== --- trunk/reactos/hal/halx86/generic/cmos.c [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/cmos.c [iso-8859-1] Mon Jan 25 00:57:09 2010 @@ -17,8 +17,42 @@ KSPIN_LOCK HalpSystemHardwareLock; UCHAR HalpCmosCenturyOffset; - -/* PRIVATE FUNCTIONS *********************************************************/ +ULONG HalpSystemHardwareFlags; + +/* PRIVATE FUNCTIONS **********************************************************/ + +VOID +NTAPI +HalpAcquireSystemHardwareSpinLock(VOID) +{ + ULONG Flags; + + /* Get flags and disable interrupts */ + Flags = __readeflags(); + _disable(); + + /* Acquire the lock */ + KxAcquireSpinLock(&HalpSystemHardwareLock); + + /* We have the lock, save the flags now */ + HalpSystemHardwareFlags = Flags; +} + +VOID +NTAPI +HalpReleaseCmosSpinLock(VOID) +{ + ULONG Flags; + + /* Get the flags */ + Flags = HalpSystemHardwareFlags; + + /* Release the lock */ + KxReleaseSpinLock(&HalpSystemHardwareLock); + + /* Restore the flags */ + __writeeflags(Flags); +} FORCEINLINE UCHAR Modified: trunk/reactos/hal/halx86/generic/spinlock.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/spinloc…
============================================================================== --- trunk/reactos/hal/halx86/generic/spinlock.c [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/spinlock.c [iso-8859-1] Mon Jan 25 00:57:09 2010 @@ -18,141 +18,6 @@ #undef KeAcquireSpinLock #undef KeReleaseSpinLock -// -// This is duplicated from ke_x.h -// -#ifdef CONFIG_SMP -// -// Spinlock Acquisition at IRQL >= DISPATCH_LEVEL -// -FORCEINLINE -VOID -KxAcquireSpinLock(IN PKSPIN_LOCK SpinLock) -{ - /* Make sure that we don't own the lock already */ - if (((KSPIN_LOCK)KeGetCurrentThread() | 1) == *SpinLock) - { - /* We do, bugcheck! */ - KeBugCheckEx(SPIN_LOCK_ALREADY_OWNED, (ULONG_PTR)SpinLock, 0, 0, 0); - } - - for (;;) - { - /* Try to acquire it */ - if (InterlockedBitTestAndSet((PLONG)SpinLock, 0)) - { - /* Value changed... wait until it's locked */ - while (*(volatile KSPIN_LOCK *)SpinLock == 1) - { -#ifdef DBG - /* On debug builds, we use a much slower but useful routine */ - //Kii386SpinOnSpinLock(SpinLock, 5); - - /* FIXME: Do normal yield for now */ - YieldProcessor(); -#else - /* Otherwise, just yield and keep looping */ - YieldProcessor(); -#endif - } - } - else - { -#ifdef DBG - /* On debug builds, we OR in the KTHREAD */ - *SpinLock = (KSPIN_LOCK)KeGetCurrentThread() | 1; -#endif - /* All is well, break out */ - break; - } - } -} - -// -// Spinlock Release at IRQL >= DISPATCH_LEVEL -// -FORCEINLINE -VOID -KxReleaseSpinLock(IN PKSPIN_LOCK SpinLock) -{ -#ifdef DBG - /* Make sure that the threads match */ - if (((KSPIN_LOCK)KeGetCurrentThread() | 1) != *SpinLock) - { - /* They don't, bugcheck */ - KeBugCheckEx(SPIN_LOCK_NOT_OWNED, (ULONG_PTR)SpinLock, 0, 0, 0); - } -#endif - /* Clear the lock */ - InterlockedAnd((PLONG)SpinLock, 0); -} - -#else - -// -// Spinlock Acquire at IRQL >= DISPATCH_LEVEL -// -FORCEINLINE -VOID -KxAcquireSpinLock(IN PKSPIN_LOCK SpinLock) -{ - /* On UP builds, spinlocks don't exist at IRQL >= DISPATCH */ - UNREFERENCED_PARAMETER(SpinLock); -} - -// -// Spinlock Release at IRQL >= DISPATCH_LEVEL -// -FORCEINLINE -VOID -KxReleaseSpinLock(IN PKSPIN_LOCK SpinLock) -{ - /* On UP builds, spinlocks don't exist at IRQL >= DISPATCH */ - UNREFERENCED_PARAMETER(SpinLock); -} - -#endif - -/* GLOBALS ********************************************************************/ - -ULONG HalpSystemHardwareFlags; -KSPIN_LOCK HalpSystemHardwareLock; - -/* PRIVATE FUNCTIONS **********************************************************/ - -VOID -NTAPI -HalpAcquireSystemHardwareSpinLock(VOID) -{ - ULONG Flags; - - /* Get flags and disable interrupts */ - Flags = __readeflags(); - _disable(); - - /* Acquire the lock */ - KxAcquireSpinLock(&HalpSystemHardwareLock); - - /* We have the lock, save the flags now */ - HalpSystemHardwareFlags = Flags; -} - -VOID -NTAPI -HalpReleaseCmosSpinLock(VOID) -{ - ULONG Flags; - - /* Get the flags */ - Flags = HalpSystemHardwareFlags; - - /* Release the lock */ - KxReleaseSpinLock(&HalpSystemHardwareLock); - - /* Restore the flags */ - __writeeflags(Flags); -} - /* FUNCTIONS *****************************************************************/ /* Modified: trunk/reactos/hal/halx86/include/halp.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/include/halp.h?…
============================================================================== --- trunk/reactos/hal/halx86/include/halp.h [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/include/halp.h [iso-8859-1] Mon Jan 25 00:57:09 2010 @@ -606,6 +606,101 @@ VOID ); +// +// This is duplicated from ke_x.h +// +#ifdef CONFIG_SMP +// +// Spinlock Acquisition at IRQL >= DISPATCH_LEVEL +// +FORCEINLINE +VOID +KxAcquireSpinLock(IN PKSPIN_LOCK SpinLock) +{ + /* Make sure that we don't own the lock already */ + if (((KSPIN_LOCK)KeGetCurrentThread() | 1) == *SpinLock) + { + /* We do, bugcheck! */ + KeBugCheckEx(SPIN_LOCK_ALREADY_OWNED, (ULONG_PTR)SpinLock, 0, 0, 0); + } + + for (;;) + { + /* Try to acquire it */ + if (InterlockedBitTestAndSet((PLONG)SpinLock, 0)) + { + /* Value changed... wait until it's locked */ + while (*(volatile KSPIN_LOCK *)SpinLock == 1) + { +#ifdef DBG + /* On debug builds, we use a much slower but useful routine */ + //Kii386SpinOnSpinLock(SpinLock, 5); + + /* FIXME: Do normal yield for now */ + YieldProcessor(); +#else + /* Otherwise, just yield and keep looping */ + YieldProcessor(); +#endif + } + } + else + { +#ifdef DBG + /* On debug builds, we OR in the KTHREAD */ + *SpinLock = (KSPIN_LOCK)KeGetCurrentThread() | 1; +#endif + /* All is well, break out */ + break; + } + } +} + +// +// Spinlock Release at IRQL >= DISPATCH_LEVEL +// +FORCEINLINE +VOID +KxReleaseSpinLock(IN PKSPIN_LOCK SpinLock) +{ +#ifdef DBG + /* Make sure that the threads match */ + if (((KSPIN_LOCK)KeGetCurrentThread() | 1) != *SpinLock) + { + /* They don't, bugcheck */ + KeBugCheckEx(SPIN_LOCK_NOT_OWNED, (ULONG_PTR)SpinLock, 0, 0, 0); + } +#endif + /* Clear the lock */ + InterlockedAnd((PLONG)SpinLock, 0); +} + +#else + +// +// Spinlock Acquire at IRQL >= DISPATCH_LEVEL +// +FORCEINLINE +VOID +KxAcquireSpinLock(IN PKSPIN_LOCK SpinLock) +{ + /* On UP builds, spinlocks don't exist at IRQL >= DISPATCH */ + UNREFERENCED_PARAMETER(SpinLock); +} + +// +// Spinlock Release at IRQL >= DISPATCH_LEVEL +// +FORCEINLINE +VOID +KxReleaseSpinLock(IN PKSPIN_LOCK SpinLock) +{ + /* On UP builds, spinlocks don't exist at IRQL >= DISPATCH */ + UNREFERENCED_PARAMETER(SpinLock); +} + +#endif + #ifdef _M_AMD64 #define KfLowerIrql KeLowerIrql #ifndef CONFIG_SMP
14 years, 9 months
1
0
0
0
[sir_richard] 45238: You really need to get your compiler version shit together. I was told GCC 4.4 is what's used in ReactOS, yet the build server insists on using an old and broken version of GCC that doesn't support half the things we're trying to do here! Hackfix the Mask Table by providing ugly and incomprehensible hex magic numbers for the mappings, if a GCC older than 4.4 is used.
by sir_richard@svn.reactos.org
Author: sir_richard Date: Mon Jan 25 00:35:07 2010 New Revision: 45238 URL:
http://svn.reactos.org/svn/reactos?rev=45238&view=rev
Log: You really need to get your compiler version shit together. I was told GCC 4.4 is what's used in ReactOS, yet the build server insists on using an old and broken version of GCC that doesn't support half the things we're trying to do here! Hackfix the Mask Table by providing ugly and incomprehensible hex magic numbers for the mappings, if a GCC older than 4.4 is used. Modified: trunk/reactos/hal/halx86/generic/pic.c Modified: trunk/reactos/hal/halx86/generic/pic.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/pic.c?r…
============================================================================== --- trunk/reactos/hal/halx86/generic/pic.c [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/pic.c [iso-8859-1] Mon Jan 25 00:35:07 2010 @@ -69,6 +69,8 @@ /* This table contains the static x86 PIC mapping between IRQLs and IRQs */ ULONG KiI8259MaskTable[32] = { +#ifdef __GNUC__ +#if __GNUC__ * 100 + __GNUC_MINOR__ >= 404 /* * It Device IRQLs only start at 4 or higher, so these are just software * IRQLs that don't really change anything on the hardware @@ -145,6 +147,41 @@ 0b11111111111111111111111111111011, /* IRQL 29 */ 0b11111111111111111111111111111011, /* IRQL 30 */ 0b11111111111111111111111111111011 /* IRQL 31 */ +#else + 0, /* IRQL 0 */ + 0, /* IRQL 1 */ + 0, /* IRQL 2 */ + 0, /* IRQL 3 */ + 0xFF800000, /* IRQL 4 */ + 0xFFC00000, /* IRQL 5 */ + 0xFFE00000, /* IRQL 6 */ + 0xFFF00000, /* IRQL 7 */ + 0xFFF80000, /* IRQL 8 */ + 0xFFFC0000, /* IRQL 9 */ + 0xFFFE0000, /* IRQL 10 */ + 0xFFFF0000, /* IRQL 11 */ + 0xFFFF8000, /* IRQL 12 */ + 0xFFFFC000, /* IRQL 13 */ + 0xFFFFE000, /* IRQL 14 */ + 0xFFFFF000, /* IRQL 15 */ + 0xFFFFF800, /* IRQL 16 */ + 0xFFFFFC00, /* IRQL 17 */ + 0xFFFFFE00, /* IRQL 18 */ + 0xFFFFFE00, /* IRQL 19 */ + 0xFFFFFE80, /* IRQL 20 */ + 0xFFFFFEC0, /* IRQL 21 */ + 0xFFFFFEE0, /* IRQL 22 */ + 0xFFFFFEF0, /* IRQL 23 */ + 0xFFFFFEF8, /* IRQL 24 */ + 0xFFFFFEF8, /* IRQL 25 */ + 0xFFFFFEFA, /* IRQL 26 */ + 0xFFFFFFFA, /* IRQL 27 */ + 0xFFFFFFFB, /* IRQL 28 */ + 0xFFFFFFFB, /* IRQL 29 */ + 0xFFFFFFFB, /* IRQL 30 */ + 0xFFFFFFFB /* IRQL 31 */ +#endif +#endif }; USHORT HalpEisaELCR;
14 years, 9 months
1
0
0
0
[sir_richard] 45237: [HAL]: Implement and document the HalpSpecialDismissTable. Explain how each IRQ should be handled and what the special cases are. Implement said special cases (based on ISA System Architecture, 3rd Edition). [HAL]: Implement HalBeginSystemInterrupt in C instead of ASM, it jumps into one of the IRQ handlers registered in the HalpSpecialDismissTable.
by sir_richard@svn.reactos.org
Author: sir_richard Date: Mon Jan 25 00:30:43 2010 New Revision: 45237 URL:
http://svn.reactos.org/svn/reactos?rev=45237&view=rev
Log: [HAL]: Implement and document the HalpSpecialDismissTable. Explain how each IRQ should be handled and what the special cases are. Implement said special cases (based on ISA System Architecture, 3rd Edition). [HAL]: Implement HalBeginSystemInterrupt in C instead of ASM, it jumps into one of the IRQ handlers registered in the HalpSpecialDismissTable. Modified: trunk/reactos/hal/halx86/generic/irq.S trunk/reactos/hal/halx86/generic/pic.c trunk/reactos/hal/halx86/include/halp.h Modified: trunk/reactos/hal/halx86/generic/irq.S URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/irq.S?r…
============================================================================== --- trunk/reactos/hal/halx86/generic/irq.S [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/irq.S [iso-8859-1] Mon Jan 25 00:30:43 2010 @@ -84,38 +84,6 @@ .long 0 /* IRQL 30 */ .long 0 /* IRQL 31 */ -HalpSpecialDismissTable: - .rept 7 - .long GenericIRQ /* IRQ 0-7 */ - .endr - .long IRQ7 /* IRQ 7 */ - .rept 5 - .long GenericIRQ /* IRQ 8-12 */ - .endr - .long IRQ13 /* IRQ 13 */ - .long GenericIRQ /* IRQ 14 */ - .long IRQ15 /* IRQ 15 */ - .rept 20 - .long GenericIRQ /* IRQ 16-35 */ - .endr -#if DBG -.rept 172 - .long InvalidIRQ /* IRQ 36-207 */ -.endr -#endif - -HalpSpecialDismissLevelTable: - .rept 7 - .long GenericIRQLevel /* IRQ 0-7 */ - .endr - .long IRQ7Level /* IRQ 7 */ - .rept 5 - .long GenericIRQLevel /* IRQ 8-12 */ - .endr - .long IRQ13Level /* IRQ 13 */ - .long GenericIRQLevel /* IRQ 14 */ - .long IRQ15Level /* IRQ 15 */ - SWInterruptLookUpTable: .byte PASSIVE_LEVEL /* IRR 0 */ .byte PASSIVE_LEVEL /* IRR 1 */ @@ -210,198 +178,6 @@ ret .endfunc -.globl _HalBeginSystemInterrupt@12 -.func HalBeginSystemInterrupt@12 -_HalBeginSystemInterrupt@12: - - /* Convert to IRQ and call the handler */ - xor ecx, ecx - mov cl, byte ptr [esp+8] - sub ecx, PRIMARY_VECTOR_BASE - jmp HalpSpecialDismissTable[ecx*4] - -IRQ15: - /* This is IRQ 15, check if it's spurious */ - mov al, 0xB - out 0xA0, al - jmp $+2 - in al, 0xA0 - test al, 0x80 - jnz GenericIRQ - - /* Cascaded interrupt... dismiss it and return FALSE */ -CascadedInterrupt: - mov al, 0x62 - out 0x20, al - mov eax, 0 - ret 12 - -IRQ7: - /* This is IRQ 7, check if it's spurious */ - mov al, 0xB - out 0x20, al - jmp $+2 - in al, 0x20 - test al, 0x80 - jnz GenericIRQ - - /* It is, return FALSE */ - mov eax, 0 - ret 12 - -IRQ13: - /* AT 80287 latch clear */ - xor al, al - out 0xF0, al - -GenericIRQ: - /* Get current and new IRQL */ - xor eax, eax - mov al, byte ptr [esp+4] - mov ebx, PCR[KPCR_IRQL] - - /* Set and save old */ - mov PCR[KPCR_IRQL], eax - mov edx, [esp+12] - mov [edx], bl - - /* Set IRQ mask in the PIC */ - mov eax, KiI8259MaskTable[eax*4] - or eax, PCR[KPCR_IDR] - out 0x21, al - shr eax, 8 - out 0xA1, al - - /* Check to which PIC the EOI was sent */ - mov eax, ecx - cmp eax, 8 - jnb Pic1 - - /* Write mask to master PIC */ - or al, 0x60 - out 0x20, al - - /* Enable interrupts and return TRUE */ - sti - mov eax, 1 - ret 12 - -Pic1: - /* Write mask to slave PIC */ - mov al, 0x20 - out 0xA0, al - mov al, 0x62 - out 0x20, al - - /* Enable interrupts and return TRUE */ - sti - mov eax, 1 - ret 12 - -#if DBG -InvalidIRQ: - /* Dismiss it */ - mov eax, 0 - ret 12 -#endif -.endfunc - -IRQ15Level: - /* This is IRQ 15, check if it's spurious */ - mov al, 0xB - out 0xA0, al - jmp $+2 - in al, 0xA0 - test al, 0x80 - jnz GenericIRQLevel - jmp CascadedInterrupt - -IRQ7Level: - /* This is IRQ 7, check if it's spurious */ - mov al, 0xB - out 0x20, al - jmp $+2 - in al, 0x20 - test al, 0x80 - jnz GenericIRQLevel - - /* It is, return FALSE */ -SpuriousInterrupt: - mov eax, 0 - ret 12 - -IRQ13Level: - /* AT 80287 latch clear */ - xor al, al - out 0xF0, al - -GenericIRQLevel: - /* Save IRQL */ - xor eax, eax - mov al, [esp+4] - - /* Set IRQ mask in the PIC */ - mov eax, KiI8259MaskTable[eax*4] - or eax, PCR[KPCR_IDR] - out 0x21, al - shr eax, 8 - out 0xA1, al - - /* Compute new IRR */ - mov eax, ecx - mov ebx, 1 - add ecx, 4 - shl ebx, cl - or PCR[KPCR_IRR], ebx - - /* Get IRQLs */ - mov cl, [esp+4] - mov bl, PCR[KPCR_IRQL] - mov edx, [esp+12] - - /* Check to which PIC the EOI was sent */ - cmp eax, 8 - jnb Pic1Level - - /* Write mask to master PIC */ - or al, 0x60 - out 0x20, al - - /* Check for spurious */ - cmp cl, bl - jbe SpuriousInterrupt - - /* Write IRQL values */ - movzx ecx, cl - mov PCR[KPCR_IRQL], ecx - mov [edx], bl - - /* Enable interrupts and return TRUE */ - sti - mov eax, 1 - ret 12 - -Pic1Level: - /* Write mask to slave and master PIC */ - add al, 0x58 - out 0xA0, al - mov al, 0x62 - out 0x20, al - - /* Was this a lower interrupt? */ - cmp cl, bl - jbe SpuriousInterrupt - - /* Write IRQL values */ - movzx ecx, cl - mov PCR[KPCR_IRQL], ecx - mov [edx], bl - - /* Enable interrupts and return TRUE */ - sti - mov eax, 1 - ret 12 - .globl _HalEndSystemInterrupt@8 .func HalEndSystemInterrupt@8 _HalEndSystemInterrupt@8: Modified: trunk/reactos/hal/halx86/generic/pic.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/pic.c?r…
============================================================================== --- trunk/reactos/hal/halx86/generic/pic.c [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/pic.c [iso-8859-1] Mon Jan 25 00:30:43 2010 @@ -13,6 +13,58 @@ #include <debug.h> /* GLOBALS ********************************************************************/ + +/* + * This table basically keeps track of level vs edge triggered interrupts. + * Windows has 250+ entries, but it seems stupid to replicate that since the PIC + * can't actually have that many. + * + * When a level interrupt is registered, the respective pointer in this table is + * modified to point to a dimiss routine for level interrupts instead. + * + * The other thing this table does is special case IRQ7, IRQ13 and IRQ15: + * + * - If an IRQ line is deasserted before it is acknowledged due to a noise spike + * generated by an expansion device (since the IRQ line is low during the 1st + * acknowledge bus cycle), the i8259 will keep the line low for at least 100ns + * When the spike passes, a pull-up resistor will return the IRQ line to high. + * Since the PIC requires the input be high until the first acknowledge, the + * i8259 knows that this was a spurious interrupt, and on the second interrupt + * acknowledge cycle, it reports this to the CPU. Since no valid interrupt has + * actually happened Intel hardcoded the chip to report IRQ7 on the master PIC + * and IRQ15 on the slave PIC (IR7 either way). + * + * "ISA System Architecture", 3rd Edition, states that these cases should be + * handled by reading the respective Interrupt Service Request (ISR) bits from + * the affected PIC, and validate whether or not IR7 is set. If it isn't, then + * the interrupt is spurious and should be ignored. + * + * Note that for a spurious IRQ15, we DO have to send an EOI to the master for + * IRQ2 since the line was asserted by the slave when it received the spurious + * IRQ15! + * + * - When the 80287/80387 math co-processor generates an FPU/NPX trap, this is + * connected to IRQ13, so we have to clear the busy latch on the NPX port. + */ +PHAL_DISMISS_INTERRUPT HalpSpecialDismissTable[16] = +{ + HalpDismissIrqGeneric, + HalpDismissIrqGeneric, + HalpDismissIrqGeneric, + HalpDismissIrqGeneric, + HalpDismissIrqGeneric, + HalpDismissIrqGeneric, + HalpDismissIrqGeneric, + HalpDismissIrq07, + HalpDismissIrqGeneric, + HalpDismissIrqGeneric, + HalpDismissIrqGeneric, + HalpDismissIrqGeneric, + HalpDismissIrqGeneric, + HalpDismissIrq13, + HalpDismissIrqGeneric, + HalpDismissIrq15 +}; /* This table contains the static x86 PIC mapping between IRQLs and IRQs */ ULONG KiI8259MaskTable[32] = @@ -342,6 +394,139 @@ KeGetPcr()->IRR &= ~(1 << Irql); } +/* INTERRUPT DISMISSAL FUNCTIONS **********************************************/ + +BOOLEAN +FORCEINLINE +_HalpDismissIrqGeneric(IN KIRQL Irql, + IN ULONG Irq, + OUT PKIRQL OldIrql) +{ + PIC_MASK Mask; + KIRQL CurrentIrql; + I8259_OCW2 Ocw2; + PKPCR Pcr = KeGetPcr(); + + /* First save current IRQL and compare it to the requested one */ + CurrentIrql = Pcr->Irql; + + /* Set the new IRQL and return the current one */ + Pcr->Irql = Irql; + *OldIrql = CurrentIrql; + + /* Set new PIC mask */ + Mask.Both = KiI8259MaskTable[Irql] | Pcr->IDR; + __outbyte(PIC1_DATA_PORT, Mask.Master); + __outbyte(PIC2_DATA_PORT, Mask.Slave); + + /* Prepare OCW2 for EOI */ + Ocw2.Bits = 0; + Ocw2.EoiMode = SpecificEoi; + + /* Check which PIC needs the EOI */ + if (Irq > 8) + { + /* Send the EOI for the IRQ */ + __outbyte(PIC2_CONTROL_PORT, Ocw2.Bits | (Irq - 8)); + + /* Send the EOI for IRQ2 on the master because this was cascaded */ + __outbyte(PIC1_CONTROL_PORT, Ocw2.Bits | 2); + } + else + { + /* Send the EOI for the IRQ */ + __outbyte(PIC1_CONTROL_PORT, Ocw2.Bits | Irq); + } + + /* Enable interrupts and return success */ + _enable(); + return TRUE; +} + +BOOLEAN +__attribute__((regparm(3))) +HalpDismissIrqGeneric(IN KIRQL Irql, + IN ULONG Irq, + OUT PKIRQL OldIrql) +{ + /* Run the inline code */ + return _HalpDismissIrqGeneric(Irql, Irq, OldIrql); +} + +BOOLEAN +__attribute__((regparm(3))) +HalpDismissIrq15(IN KIRQL Irql, + IN ULONG Irq, + OUT PKIRQL OldIrql) +{ + I8259_OCW3 Ocw3; + I8259_OCW2 Ocw2; + I8259_ISR Isr; + + /* Request the ISR */ + Ocw3.Bits = 0; + Ocw3.Sbo = 1; /* This encodes an OCW3 vs. an OCW2 */ + Ocw3.ReadRequest = ReadIsr; + __outbyte(PIC2_CONTROL_PORT, Ocw3.Bits); + + /* Read the ISR */ + Isr.Bits = __inbyte(PIC2_CONTROL_PORT); + + /* Is IRQ15 really active (this is IR7) */ + if (Isr.Irq7 == FALSE) + { + /* It isn't, so we have to EOI IRQ2 because this was cascaded */ + Ocw2.Bits = 0; + Ocw2.EoiMode = SpecificEoi; + __outbyte(PIC1_CONTROL_PORT, Ocw2.Bits | 2); + + /* And now fail since this was spurious */ + return FALSE; + } + + /* Do normal interrupt dismiss */ + return _HalpDismissIrqGeneric(Irql, Irq, OldIrql); +} + + +BOOLEAN +__attribute__((regparm(3))) +HalpDismissIrq13(IN KIRQL Irql, + IN ULONG Irq, + OUT PKIRQL OldIrql) +{ + /* Clear the FPU busy latch */ + __outbyte(0xF0, 0); + + /* Do normal interrupt dismiss */ + return _HalpDismissIrqGeneric(Irql, Irq, OldIrql); +} + +BOOLEAN +__attribute__((regparm(3))) +HalpDismissIrq07(IN KIRQL Irql, + IN ULONG Irq, + OUT PKIRQL OldIrql) +{ + I8259_OCW3 Ocw3; + I8259_ISR Isr; + + /* Request the ISR */ + Ocw3.Bits = 0; + Ocw3.Sbo = 1; + Ocw3.ReadRequest = ReadIsr; + __outbyte(PIC1_CONTROL_PORT, Ocw3.Bits); + + /* Read the ISR */ + Isr.Bits = __inbyte(PIC1_CONTROL_PORT); + + /* Is IRQ 7 really active? If it isn't, this is spurious so fail */ + if (Isr.Irq7 == FALSE) return FALSE; + + /* Do normal interrupt dismiss */ + return _HalpDismissIrqGeneric(Irql, Irq, OldIrql); +} + /* SYSTEM INTERRUPTS **********************************************************/ /* @@ -420,3 +605,19 @@ /* Bring interrupts back */ _enable(); } + +/* + * @implemented + */ +BOOLEAN +NTAPI +HalBeginSystemInterrupt(IN KIRQL Irql, + IN UCHAR Vector, + OUT PKIRQL OldIrql) +{ + ULONG Irq; + + /* Get the IRQ and call the proper routine to handle it */ + Irq = Vector - PRIMARY_VECTOR_BASE; + return HalpSpecialDismissTable[Irq](Irql, Irq, OldIrql); +} Modified: trunk/reactos/hal/halx86/include/halp.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/include/halp.h?…
============================================================================== --- trunk/reactos/hal/halx86/include/halp.h [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/include/halp.h [iso-8859-1] Mon Jan 25 00:30:43 2010 @@ -178,6 +178,26 @@ BufferedSlave, BufferedMaster } I8259_ICW4_BUFFERED_MODE; + +typedef enum _I8259_READ_REQUEST +{ + InvalidRequest, + InvalidRequest2, + ReadIdr, + ReadIsr +} I8259_READ_REQUEST; + +typedef enum _I8259_EOI_MODE +{ + RotateAutoEoiClear, + NonSpecificEoi, + InvalidEoiMode, + SpecificEoi, + RotateAutoEoiSet, + RotateNonSpecific, + SetPriority, + RotateSpecific +} I8259_EOI_MODE; // // Definitions for ICW Registers @@ -242,6 +262,52 @@ }; UCHAR Bits; } I8259_ICW4, *PI8259_ICW4; + +typedef union _I8259_OCW2 +{ + struct + { + UCHAR IrqNumber:3; + UCHAR Sbz:2; + I8259_EOI_MODE EoiMode:3; + }; + UCHAR Bits; +} I8259_OCW2, *PI8259_OCW2; + +typedef union _I8259_OCW3 +{ + struct + { + I8259_READ_REQUEST ReadRequest:2; + UCHAR PollCommand:1; + UCHAR Sbo:1; + UCHAR Sbz:1; + UCHAR SpecialMaskMode:2; + UCHAR Reserved:1; + }; + UCHAR Bits; +} I8259_OCW3, *PI8259_OCW3; + +typedef union _I8259_ISR +{ + union + { + struct + { + UCHAR Irq0:1; + UCHAR Irq1:1; + UCHAR Irq2:1; + UCHAR Irq3:1; + UCHAR Irq4:1; + UCHAR Irq5:1; + UCHAR Irq6:1; + UCHAR Irq7:1; + }; + }; + UCHAR Bits; +} I8259_ISR, *PI8259_ISR; + +typedef I8259_ISR I8259_IDR, *PI8259_IDR; // // See EISA System Architecture 2nd Edition (Tom Shanley, Don Anderson, John Swindle) @@ -295,6 +361,53 @@ }; } PIC_MASK, *PPIC_MASK; +typedef +VOID +(*PHAL_SW_INTERRUPT_HANDLER)( + VOID +); + +typedef +BOOLEAN +__attribute__((regparm(3))) +(*PHAL_DISMISS_INTERRUPT)( + IN KIRQL Irql, + IN ULONG Irq, + OUT PKIRQL OldIrql +); + +BOOLEAN +__attribute__((regparm(3))) +HalpDismissIrqGeneric( + IN KIRQL Irql, + IN ULONG Irq, + OUT PKIRQL OldIrql +); + +BOOLEAN +__attribute__((regparm(3))) +HalpDismissIrq15( + IN KIRQL Irql, + IN ULONG Irq, + OUT PKIRQL OldIrql +); + +BOOLEAN +__attribute__((regparm(3))) +HalpDismissIrq13( + IN KIRQL Irql, + IN ULONG Irq, + OUT PKIRQL OldIrql +); + +BOOLEAN +__attribute__((regparm(3))) +HalpDismissIrq07( + IN KIRQL Irql, + IN ULONG Irq, + OUT PKIRQL OldIrql +); + // // Mm PTE/PDE to Hal PTE/PDE //
14 years, 9 months
1
0
0
0
← Newer
1
...
10
11
12
13
14
15
16
...
53
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Results per page:
10
25
50
100
200