*BEGIN GRAPHICS VERSION=442/420 ENCODING=7BIT ** "Creator" jeremy ** "Creation Date" Sat Mar 29 12:14:11 1997 ** "Revisor" jeremy ** "Last Modified" Wed Feb 2 01:36:10 2000 *BEGIN HEX VERSION=441/441 ENCODING=7BIT 474946383961E2006B00F700000000000000330000660000990000CC0000FF0033000033330033 660033990033CC0033FF0066000066330066660066990066CC0066FF0099000099330099660099 990099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF0000FF3300FF6600FF9900FF CC00FFFF3300003300333300663300993300CC3300FF3333003333333333663333993333CC3333 FF3366003366333366663366993366CC3366FF3399003399333399663399993399CC3399FF33CC 0033CC3333CC6633CC9933CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF6600006600 336600666600996600CC6600FF6633006633336633666633996633CC6633FF6666006666336666 666666996666CC6666FF6699006699336699666699996699CC6699FF66CC0066CC3366CC6666CC 9966CCCC66CCFF66FF0066FF3366FF6666FF9966FFCC66FFFF9900009900339900669900999900 CC9900FF9933009933339933669933999933CC9933FF9966009966339966669966999966CC9966 FF9999009999339999669999999999CC9999FF99CC0099CC3399CC6699CC9999CCCC99CCFF99FF 0099FF3399FF6699FF9999FFCC99FFFFCC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC33 33CC3366CC3399CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933CC99 66CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFFCCFF00CCFF33CCFF66CCFF 99CCFFCCCCFFFFFF0000FF0033FF0066FF0099FF00CCFF00FFFF3300FF3333FF3366FF3399FF33 CCFF33FFFF6600FF6633FF6666FF6699FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99 FFFFCC00FFCC33FFCC66FFCC99FFCCCCFFCCFFFFFF00FFFF33FFFF66FFFF99FFFFCCFFFFFF0000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 0021F904010000D7002C00000000E2006B004008FE00AF091C48B0A0C18308132A5CC8B0A1C387 10231EAC564DA2C58B18336ADCC8B1A3456BAE42AA0040124048541E53AA5CC9B225CB5721FD94 9C4993249590CE5CEADCC9B367466A218306255493A60AA1485D41F3C9B4A953A6205D69293AF3 A82B51C29EA6AC062BA9D7A4AFAA595368ADEBD7B36885BE1A0833AD5BB014CDBE155AD1603591 544B5A9D1BD6A1356A6DE70A763556E0C9BC7A85C21A0B4D99B04BA2AE462DF4A2B2E5CB95BB84 1415E952B2672101611E7D2524A7AC775DC1405C92D0494E315993F4F31A952B54ACAD725A6A56 3600D7572F458A64DB55EE9097AEB51D3D9AC6C9E1C9A0854CC51CF3E6E4D7A2FA299E74A4EFCD C3AEFE997551DDB2F3A0850085EC52BE72A1DB9196C224CAFA396FBC88B598468D3F2F6D57F15D 131B627B21451F623721C7CB35A95DD19E7B41A5A2992B863CA89E2B9E29040D34C30CC3CB8720 82384C741629338C30220EB3D4401DB6E8E28B1D26C3228C34B648503235D6A88C61AEC844E07E 33E608A340D0E0F8A170977C280C891671E8A192C3EC38108E42BEA8D5952D01E58A7779B9864A 80588629E69809A13515826791A9E69A62A646856F2415C7492432B269E79D58C284DB4CFF7DB9 209E80061AE65DC2AD28E8A18826DA51602119AAE8A3905EA4E5813559954AA498664A50545BC2 49D37FCF682A2AA403E6651556A3A6FAA89BC7B9721AA6FF66F948A01FC0B942881F5AA8A09F2B 7F32881E79ED5D014821C4160B6C79D76517D2999E36EB2C49BB223390965C3E8BD87FD46C1A21 0D0FD2D045B1C53AD8DE7B5FAE585732B005F5A66C09BAB2168FEC3D980A7C02A556A185C8C9D8 5BAB5F2AC32A6BC545324C54CC52952027E1CD27DB7F020BA4E5BAD78614094C94E10BE0529C3E F84269AE66E5B050A810A205152A540B40C93068B11D529C812910324215D2C51534D4ECAD215E C9DCC5CE3CF79C6C54226B21F4D04403774978CA2D4BF4D2426F168940FB22E6B4B2B632BD74AD 3D926C94AE585F059D41D070970A2034DBDCC5854849D8F3DA5DCC5BAEAA8386043155BB6608F7 DD80EAD9AA287DD8E1ED7798DA590BC07F9C79FCF7E15A9965F24C30045528E290AB0934709CD5 19F9E59843C469A899773E666AF4155798E7A4FBD496AC89DD56FAEA2C71BA384D8DBB7229EBB4 6334A9B3BB725EFBEE0BB555F0B3C039CAFBF0D4A822CAF1C717F73A9FC80937DCF34F0F2FBD41 D4B2C6B0F0D3675F50D4FE498C3DA0FE005D13389060418307112654B8906143870F211E7CE58A 10008B17315AF4E3CA552468114186743891A32B3F545464546951058C8DAE50252B688D24C742 5D68BCD0B993674F9F3DBB70E434EC1A358E295726550A4085969226512EC548A564B5821CFD48 05E087901618525D3EB586D068C9548072FE54BBF6850B8EA22E09B4C6918AD692A844E545F594 63A76B73395E61FB82C65354873976196C88A3C76B24B55E7C59524B64004E9F665DFAF623E0CA 5A5510E28B752966640249021AFCA2D05DC4AE0C0DBE229428C19A9F97867E4A6D20345E7B53AD 9EED8A53DCBF3657734415492069A92A9447BA0459EB5E579722A53A2A5574C76BD5E856FEE778 C97859A44AA15FD7EECAC560B7AE44397ECC7135A0C6CA06C22AC9FBDA304E252D4B0F95E65C51 6D30E590D18FA3B4D82A0C3E5EBE0B2FB7B71C736EA9972E216A2254EC822F2EF05C392F29AA88 1306350997EAEE1261260A6EB0D65CE9A4AC02577B41BBE56CA3282315781451292AAC5B4EA6F9 68ACD1BE92DA5B2B28E288328FBBFB8E73A5AEA560782B2ECFC012CAC4B2B42244B31EB502B224 EC862C0AB91A970C8CADF7E032081AE93811C5BAD146C30B3BE9CA3468984BE4A4133E4E228964 4E3FF98A04BF9A087DAA3881404CB450FC40FCEA4228117594383E1DC50B50E9F05348994B3819 D4B04D45B154D1DA444A55D55559454841F1FF706C55D65969ADD5D65B13E2A8A2093DC4D5D75F 810D1658C0A6FC713C54854D56D965993D08441F557A49BE66A9ADD65A550123A44730A5D2C25B 6F4B0234CF6BC92DD7DC085DC1CDB22AC763EEDC77E125D749A95E5ACEC478F1CD975AEA54EA4E 5C7D010E78595D591A735A81114E1857C060924EE18721C6151A6423AED8E28BC17BE5E28D397E A8A6543A0E59E4FC746517E49151AEB851A4487426E5971326A9588B307B06E69BF15570D76839 B219E79FAF5D39458E3E02DAE881515CCABAB18E6EDA570535B34C39A7A9A65568CB0A86A9EAAD 552D6966AC99E2E864AEC96E086AA6B8CD8D472ABC7D69ECB2E12EA8D1D1D45D89443A51392DEE BD34057AF3125E00FF8D2358331CC6F064A0499CEFC5674ADAEEF1C6655CF21C77564A39E326CF 7CA067A522F192C83567DC42CB7B55FF18A06B0207122C68F020C2840A17326CE8F021C483D45C B95201E022C68C00A850BC942C22C89022AD55A3F6EA15C594144FC2A2662D2249582755D25479 F2E6CD96D476BE1458722735993867D62CFAAA65CF812483DE340AAB5A426B14B568AC0A80222A 51426DBEA2562D29C4A5448B721D7A14A85789450911F2A3E52D5C3F846ABE42680D25CD4285BA F0EDEB972F20BD8205D314C5EB9A5495A8D832660BF731E4B773C9A664EB36F2648AB00CC2A268 552347956DE3B2A5F90AAC416B9DF31602F4F775E0C18415472288D71595CFBA31FAA1388C6035 95805CBC286EFC38F2E4CA5F18A21809DA3594A87653D7AD054675AB2A5202A7983B3BF88BFFBD 5DD52D783765211ACBD7B32FDEA5E34781140955D74259A5309F29BBB4A751A86821ED5D411127 BF055751782A5021575B092EC8D86EDBB932CA4028D1071E0C5A34C6D66EA850041D622901D21E 736411B79E0B1489728952DE5537D98A91C818C925A2A4C4E26AFCB5978A8A33DAE80A893DCAE7 8A1FE0659692452FD694A46E2A42772093BA4988152A1EE21621459D5C73A0212436E70A2A97C8 C8094557B4F7E573044DE40A21516A77242C490DD30927AA50A45E7B584592DF35ABE1B91E20CE 29D3A767F5F548A62BD85107839E97B8B85B689740475191D485260A8DC93C432975125EB2A92B 3AB2F79F2B97B0B82545A22E37A02B051A04CD8FFF6CBAF9664AE50DD9E599CEC587D79FCBD140 607E077EB7DB6462265629A43D426361A72AB2B866758CBA822988585517298F40B6F75EAB7CAE A9EA72420E14DC69D74053634AC352371954D7A41AE4B4C1A644E20B3CA2529BBB442A59EA61AB 552721A6D7AC39AB46E33D971855584E8B6F62D3353BED252805D8DE7F618658268981963AE840 353DF5CC2814116CD55CA87C24B197351572227BDC7A24B0C8D48D7789BC572A4C2DC29612F89B BFD459C9C933D5E085AC6EA1DD0BCD9A24724B53AFBE02AB66CC0BD24434B13B5F8CAB8057D0C0 AA2B66A2E8ECC5EA5A151A278745C766751E1E7DB6C3BB09296CA72A8C9752C2BBCD2D66B5AEA4 42EF15FE5AFF4A11D6CBD99B66C7538D2CA516568249638B14A5D7725EB9BA92A6740FAF28D0C0 32C3876AA29A4F3E28B30AB7991D158A8719497C1552948AD7AB923A2FE4A5A63ED0288ADF4756 5632F2022241C8C47A3B27BFDFDEAA81C3D3065D62C63F9D2FD55549CB49CDCA4B9F12A691EC8E 5032C253260AA2CA5F8EBD3062D268AA28E597CF89A933D2380CEF0941238C8CA6CA2FFE9ED0A9 7F3FFE320E447FFEF8A73E4CFFFA77AA9EB96D71FB0B60FE86013FF2998F7BFC1346FB1602C0F1 CD6F46BCF808FC1078BF088AA4831EFC20080B02B7DDD84776213C210A53A8C215B250219C5218 F45A28C319D2B0863524A06ED446381BF2B0873EFCA15D1EBC55B4CD01B188463C220B432725B0 21B1894E7CE2433257B5C971108A56BC221273962CE261B18B5EACA135C228C630568E3A4CFC22 1AD378C235154551BA991B4D90313B35D2B18E0A59CDE1F685A9DFD8B18F7E34085EC2939112DE EB547F3CE421CB089E29E10D918E3CE47C8CD4233E3EB292763C96CE1667484B72928E98D44E4A 38B1C34E92328D07AA1B4660B4A752B2928E23DC48A35A294B35E2714AA2ACE22C7309C5D5F488 4FBAFC6517F1C2386012B38BA38804C78AF906C18000000000003B *END HEX FONT "Times" "Swiss" "Morewingbats" "Dutch" "Zapf Dingbats" END FONT SESSION WIN_SIZE <8974 5800> VIEW <0 0 0 1 1 1> PAGEWID 11000 PAGEHYT 8500 PRINTWID 11000 PRINTHYT 8500 PRINTLAND ON PRINTGUIDES <-211 -942> BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 R_ARROW 1 V_SPACE <0 333 0> FONT 1 SIZE 240000 BOLD ON L_SPACE 333 MARGINS <166 166 333 83> REZ <1 682 682 -1580 -503> END SESSION SLIDE_MASTER S_EXT1 <267 228 9743 2045> S_EXT2 <267 2463 9743 7366> T_ATTR0 BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 R_ARROW 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> END T_ATTR0 T_ATTR1 END T_ATTR1 S_ATTR0 BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 END S_ATTR0 S_ATTR1 END S_ATTR1 S_ATTR2 PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 END S_ATTR2 S_ATTR3 PARA <-500 1500 -500 1 1000 31 2 108> V_SPACE <28 250 0> SIZE 180000 END S_ATTR3 S_ATTR4 PARA <-500 2000 -500 1 1000 31 2 108> V_SPACE <28 306 0> SIZE 220000 END S_ATTR4 S_ATTR5 PARA <-500 2500 -500 1 1000 31 2 108> ITALICS ON END S_ATTR5 SLIDE_INFO SLIDE_STYLE <0 0 1> PAGE_BACKGD <0 0 1 17> C_SCHEME <21 21 18 18 30 30 31 30 5 10 19 15 25 35 39 43 1 0 0 0 0 0 0 6> END SLIDE_INFO .GRP BACKFILL <1 0 0 0 0 0 0> LINEFILL <1 2 5 1000 0 0 0> PARA <0 0 0 0 1000 1 0 111> V_SPACE <250 250 0> FONT 0 SIZE 180000 ITALICS OFF L_SPACE 250 MARGINS <125 125 250 62> .RECT AT (7,2181) RECOLOR ON BACKFILL <30 30 5 1000 0 0 0> LINEFILL <30 30 5 1000 0 0 0> PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 250 0> FONT 1 PNTS (0,0)(9986,0)(9986,92)(0,92)(0,0) END .GRP END SLIDE_MASTER HANDOUT_MASTER .GRP BACKFILL <1 0 0 0 0 0 0> LINEFILL <1 2 5 1000 0 0 0> PARA <0 0 0 0 1000 1 0 111> V_SPACE <250 250 0> FONT 0 END .GRP END HANDOUT_MASTER OUTLINE_MASTER .GRP END .GRP END OUTLINE_MASTER NOTES_MASTER N_EXT1 <250 250 7249 4875> N_EXT2 <250 5125 7249 9749> N_ATTR0 BACKFILL <1 18 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> PARA <0 0 0 0 1000 31 0 111> V_SPACE <28 250 0> FONT 3 MARGINS <0 0 0 0> END N_ATTR0 N_ATTR1 END N_ATTR1 N_ATTR2 PARA <0 500 0 0 1000 31 0 111> END N_ATTR2 N_ATTR3 PARA <0 1000 0 0 1000 31 0 111> END N_ATTR3 N_ATTR4 PARA <0 1500 0 0 1000 31 0 111> END N_ATTR4 N_ATTR5 PARA <0 2000 0 0 1000 31 0 111> END N_ATTR5 .GRP BACKFILL <1 0 0 0 0 0 0> LINEFILL <1 2 5 1000 0 0 0> PARA <0 0 0 0 1000 1 0 111> V_SPACE <250 250 0> FONT 0 MARGINS <125 125 250 62> END .GRP END NOTES_MASTER SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <0 1 2 3 3> END SLIDE_INFO PICTURE .TXT AT (3169,6489) RECOLOR ON BACKFILL <21 21 5 1000 0 0 0> LINEFILL <30 30 0 0 0 0 0> THICKNESS 0 R_ARROW 1 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 333 0> FONT 1 SIZE 240000 BOLD ON L_SPACE 333 MARGINS <0 0 0 0> TXTXYOFF <-10 244> T_PNTS (0,244)(0,0)(3432,0)(3432,316)(0,316)(0,244)(3432,244) .STR "email: jra@samba.org" .INS AT (3477,4183) RECOLOR ON BACKFILL <31 30 0 0 0 0 0> THICKNESS 56 MARGINS <166 166 333 83> INS_AREA <3477 4183 6490 5609> INS_REF <2 0 0 66 0 "" "" 1 0 0 1000 1000 "<2 4 <<~ ~ ~ ~>~ <1000 1000 3 \"in.\">>~ ~>"> .TXT AT (3489,5707) RECOLOR ON BACKFILL <18 18 5 1000 0 0 0> THICKNESS 0 MARGINS <0 0 0 0> TXTXYOFF <0 0> T_PNTS (0,0)(0,0)(0,0)(0,0)(0,0)(0,0)(0,0) .STR "\n" .TXT AT (3430,5675) RECOLOR ON TXTXYOFF <-24 238> T_PNTS (0,238)(0,0)(2998,0)(2998,310)(0,310)(0,238)(2998,238) .STR BACKFILL <1 18 5 1000 0 0 0> "Development Team" .RECT AT (3467,5582) RECOLOR ON BACKFILL <31 30 0 0 0 0 0> THICKNESS 56 MARGINS <166 166 333 83> PNTS (0,0)(3034,0)(3034,516)(0,516)(0,0) .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 1 0 0> T_POS <267 228 9743 2045> .TXT AT (1653,786) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 R_ARROW 0 V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-130 441> T_PNTS (0,441)(0,0)(6690,0)(6690,1183)(0,1183)(0,441)(6690,441) H_SPACE 9477 .STR "Porting Windows NT ^ko Applications to Linux" .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <1 2 0 0> T_POS <267 2463 9743 7366> .TXT AT (2399,2578) RECOLOR ON TEMPLATED ON TXTXYOFF <-46 437> T_PNTS (0,437)(0,0)(5200,0)(5200,568)(0,568)(0,437)(5200,437) .STR "By Jeremy Allison" END PICTURE NOTES .GRP BACKFILL <1 0 0 0 0 0 0> LINEFILL <1 2 5 1000 0 0 0> PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 250 0> FONT 0 SIZE 180000 BOLD OFF HOR_JUST LEFT L_SPACE 250 MARGINS <125 125 250 62> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (1134,361) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> FONT 1 SIZE 440000 BOLD ON HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-88 437> T_PNTS (0,437)(0,0)(7838,0)(7838,1179)(0,1179)(0,437)(7838,437) .STR "Windows Porting - What is possible (and what isn't)." .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (295,2302) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <11 284> T_PNTS (0,284)(0,0)(8964,0)(8964,5145)(0,5145)(0,284)(8964,284) .STR V_SPACE <56 389 56> "Windows GUI client applications are a " .STR UNDERLINE ON "nightmare" .STR UNDERLINE OFF " to port." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 42> SIZE 240000 "\n\tThe Win32 GUI API is " .STR UNDERLINE ON "horribly" .STR UNDERLINE OFF " complex, with many subtle interdependencies." .STR "\n\tTo port a Windows GUI application, without too much change, winelib from the WINE project is the best hope." .STR PARA <-500 1500 -500 1 1000 31 2 108> V_SPACE <28 250 0> SIZE 180000 "\n\t\tThis is the route Corel have taken." .STR "\n\t\tBest possible solution if the application is large and mu st keep running on Windows." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tQt, GTK are cross platform GUI toolkits. wxWindows based on GTK also cross platform." .STR PARA <-500 1500 -500 1 1000 31 2 108> V_SPACE <28 250 0> SIZE 180000 "\n\t\t" .STR "Usable" .STR " if the GUI application is small and can be re-written." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tWindows GUI programs are in a world of pain on Linux :-)." END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (1198,373) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-87 437> T_PNTS (0,437)(0,0)(7736,0)(7736,1058)(0,1058)(0,437)(7736,437) .STR "Windows Porting - what is reasonable." .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (468,2412) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <10 279> T_PNTS (0,279)(0,0)(8894,0)(8894,4768)(0,4768)(0,279)(8894,279) .STR V_SPACE <56 389 139> "Windows NT service control code is reasonably easy to port." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tServices have defined start/stop interfaces - convert these to SYSV init.d scripts (in RedHat)." .STR "\n\t\"Suspend\" interface maps to SIGTSTOP (can be caught)." .STR "\n\t\"Configure\" interface maps to SIGHUP (used by convention to re-read configure files for a daemon)." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 139> SIZE 280000 "\nEach of these control notifications is run under a different thread on NT." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tDefault model on Linux is to use a signal handler, set a va riable that is checked in main code." END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (1555,389) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-127 437> T_PNTS (0,437)(0,0)(7096,0)(7096,1058)(0,1058)(0,437)(7096,437) .STR "Multi-Threaded vs. Multi Process" .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (230,2602) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <11 279> T_PNTS (0,279)(0,0)(8987,0)(8987,4845)(0,4845)(0,279)(8987,279) .STR V_SPACE <56 389 139> "Windows NT code tends to be multi-threaded rather than multi-pr ocess (traditional UNIX model)." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tWin32 threads have " .STR UNDERLINE ON "significant" .STR UNDERLINE OFF " differences from UNIX pthreads model. Study a " .STR UNDERLINE ON "good" .STR UNDERLINE OFF " pthreads book." .STR "\n\tWin32 synchronization primitives (Mutexes, Events, Semaphor es) all can be built using pthreads primitives." .STR "\n\tBeware of different semantics between similar looking primi tives. For example, Win32 Mutexes are recursive, pthreads mutexe s are not." .STR "\nBeware of subtle dependencies on Win32 semantics.\t" END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (1454,390) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-42 437> T_PNTS (0,437)(0,0)(7110,0)(7110,1176)(0,1176)(0,437)(7110,437) .STR "Multi-Threaded vs. Multi-Process (continued)." .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (230,2600) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <11 281> T_PNTS (0,281)(0,0)(8857,0)(8857,4572)(0,4572)(0,281)(8857,281) .STR V_SPACE <56 389 139> "For performance reasons, Win32 multi-threaded code may better b e re-architected as multi-process code on Linux." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tLinux much better at handling multi-processes. Process crea tion is much cheaper under Linux than NT (about the same as thre ad creation on NT)." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 139> SIZE 280000 "\nMulti-process code easier to debug under Linux than multi-thr eaded code." .STR "\nMulti-process code more robust against programmer error than multi-threaded code (example, Samba vs. NT SMB server)." END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> SIZE 240000 BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (1434,390) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-87 437> T_PNTS (0,437)(0,0)(7307,0)(7307,1060)(0,1060)(0,437)(7307,437) .STR "Win32 to UNIX : the easy functions." .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (238,2336) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <11 284> T_PNTS (0,284)(0,0)(8987,0)(8987,4927)(0,4927)(0,284)(8987,284) .STR V_SPACE <56 389 139> "Win32 sockets map almost directly to UNIX BSD sockets." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tOnly difference is fd_set code. Win32 uses an array of HAND LES rather than a bitmask." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 139> SIZE 280000 "\nMapViewOfFile maps easily into mmap and friends." .STR "\nMost file I/O functions map easily (ReadFile -> read, WriteFi le -> write). Better performance may come from mapping to stdio functions." .STR "\nFile locking maps to fcntl (POSIX) locking." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tPOSIX locking is more flexible." END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (1431,387) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-87 437> T_PNTS (0,437)(0,0)(7307,0)(7307,1176)(0,1176)(0,437)(7307,437) .STR "Win32 to UNIX : the easy functions (continued)." .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (232,2603) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <11 281> T_PNTS (0,281)(0,0)(8962,0)(8962,4284)(0,4284)(0,281)(8962,281) .STR V_SPACE <56 389 139> "Win32 LoadLibrary and associated functions can be mapped direct ly into dlopen() and friends." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tDifferences in semantics (" .STR "private" .STR " linking of C library data) not usually an issue in most code." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 139> SIZE 280000 "\nWin32 eventlog functions are easily mapped into UNIX syslog f unctions." .STR "\nCreateProcess (monster function) maps easily into fork()/ exe c() pair." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tUNIX functions more flexible. Makes duplicating needed Crea teProcess semantics easy." END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (586,387) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-88 437> T_PNTS (0,437)(0,0)(8997,0)(8997,1180)(0,1180)(0,437)(8997,437) .STR "Win32 to UNIX : more complex mappings. " .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (230,2597) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <11 284> T_PNTS (0,284)(0,0)(8980,0)(8980,4783)(0,4783)(0,284)(8980,284) .STR V_SPACE <56 389 139> "Win32 uses WaitforMultipleObjects to " .STR "synchronize" .STR " all events." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tLimited to 64 HANDLES, but can be HANDLES to " .STR UNDERLINE ON "any" .STR UNDERLINE OFF " waitable object." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 139> SIZE 280000 "\nUnder UNIX, poll() may be best mapping." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tHowever poll() only waits on file descriptors." .STR "\n\tCommon trick is to use signal handlers that write messages down a pipe file descriptor to map other waitable objects to a p oll()." .STR "\n\tBeware of differences between slow (" .STR "interruptible" .STR " via signals) and fast system calls. Win32 has no similar conce pt." END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (586,387) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-88 437> T_PNTS (0,437)(0,0)(8997,0)(8997,1180)(0,1180)(0,437)(8997,437) .STR "Win32 to UNIX : more complex mappings (continued). " .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (221,2343) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <11 279> T_PNTS (0,279)(0,0)(8937,0)(8937,5060)(0,5060)(0,279)(8937,279) .STR V_SPACE <56 389 139> "Win32 message pump code may be replaced with SystemV message qu eues (or POSIX message queues once these become standard)." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tMsgWaitforMultipleObjects() is probably best replaced with poll(), using UNIX domain sockets to transfer the messages, rath er than " .STR "SYSV" .STR " message queues." .STR "\n\t" .STR "SYSV" .STR " functions suffer from poor integration with other synchronizat ion mechanisms (as they are not file descriptor based)." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 139> SIZE 280000 "\nWin32 heap code may be discarded - replace with simple malloc ." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tDifferent malloc libraries available under UNIX for " .STR "different" .STR " uses." END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (1479,382) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-87 437> T_PNTS (0,437)(0,0)(7206,0)(7206,1058)(0,1058)(0,437)(7206,437) .STR "Win32 to UNIX : security considerations." .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (218,2307) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <10 279> T_PNTS (0,279)(0,0)(8768,0)(8768,5143)(0,5143)(0,279)(8768,279) .STR V_SPACE <56 389 139> "Win32 has an " .STR UNDERLINE ON "amazingly" .STR UNDERLINE OFF " complex and over engineered security model." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\nEvery object can be separately secured.\t" .STR "\n\tAlmost no Win32 code uses it." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 69> SIZE 280000 "\nUNIX relies on file system security to secure shared objects. " .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tMuch simpler to use." .STR "\n\tSeveral " .STR UNDERLINE ON "subtle" .STR UNDERLINE OFF " pitfalls. O_EXCL to stop race conditions as an example." .STR V_SPACE <28 389 42> "\n\t\"root\" daemons are " .STR UNDERLINE ON "system" .STR UNDERLINE OFF " level code." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 139> SIZE 280000 "\nIn practice most Win32 code will ignore security (" .STR "e.g." .STR ". Microsoft applications)." END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> SIZE 240000 BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (1163,395) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-88 437> T_PNTS (0,437)(0,0)(7838,0)(7838,1179)(0,1179)(0,437)(7838,437) .STR "Windows Porting - here be dragons !" .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (235,2603) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <11 284> T_PNTS (0,284)(0,0)(8987,0)(8987,4488)(0,4488)(0,284)(8987,284) .STR V_SPACE <56 389 139> "Any code using MFC will be difficult to port." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tMFC classes are designed to tie together \"model\" and \"vi ew\". Roach motel class library." .STR "\n\tIf service code is just using MFC collection classes, then porting to C++ STL standard is recommended." .STR "\n\tAny code tied to Windows message pump processing will have to be re-written." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 139> SIZE 280000 "\nCOM/DCOM code must be replaced." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tCOM on Linux libraries exist - third party, binary only." .STR "\n\tOptions include ONC/RPC or Corba libraries (all available w ith source code)." END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (1519,393) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-88 437> T_PNTS (0,437)(0,0)(7125,0)(7125,1180)(0,1180)(0,437)(7125,437) .STR "Windows porting - more dragons." .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (250,2308) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <11 284> T_PNTS (0,284)(0,0)(8959,0)(8959,5119)(0,5119)(0,284)(8959,284) .STR V_SPACE <56 389 42> "I/O completion ports and asynchronous I/O under Win32 is the mo st difficult area to address." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 42> SIZE 240000 "\n\tWin32 code using this will be considered to be performance sensitive." .STR V_SPACE <28 333 69> "\n\tNo identical concepts under Linux." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 42> SIZE 280000 "\nUNIX async I/O comes closest." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 42> SIZE 240000 "\n\tLinux implementation currently done in user space - not hig h " .STR "performance" .STR "." .STR V_SPACE <28 333 69> "\n\tSGI has donated Linux kernel async I/O. May go into kernel 2.4 ?" .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 42> SIZE 280000 "\nOlder SIGIO async I/O " .STR UNDERLINE ON "may" .STR UNDERLINE OFF " work." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tMeasure " .STR "performance" .STR " to be sure (means more complex code under UNIX than Win32)" END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (979,395) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-87 436> T_PNTS (0,436)(0,0)(8224,0)(8224,1180)(0,1180)(0,436)(8224,436) .STR "Windows porting - things to throw away. " .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (257,2374) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <7 278> T_PNTS (0,278)(0,0)(8939,0)(8939,4973)(0,4973)(0,278)(8939,278) .STR V_SPACE <56 389 139> "Windows structured exception handling." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tg++ on Linux will do C++ exception handling." .STR "\n\tNo Linux equivalent to Windows C based __try keyword." .STR "\n\tMost code that depends on this is attempting to catch top l evel errors to display a dialog box. Linux does useful core dump s instead." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 139> SIZE 280000 "\nMicrosoft \"additions\" to the C language." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tThings like __declspec(), __dllexport(), __dllimport() and other monstrosities." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 139> SIZE 280000 "\nThread local storage must be done explicitly, rather then usi ng the Microsoft keyword." END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> SIZE 240000 BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (875,393) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-4 437> T_PNTS (0,437)(0,0)(8200,0)(8200,568)(0,568)(0,437)(8200,437) .STR "Weeding out Windows-isms." .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (262,2323) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <11 281> T_PNTS (0,281)(0,0)(8927,0)(8927,5119)(0,5119)(0,281)(8927,281) .STR V_SPACE <56 389 139> "Win32 has very poor abstract type definitions." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tMost functions use DWORD or other types specified as an abs olute size." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 69> SIZE 280000 "\nUnder UNIX, replace these with correct abstract types (eg. of f_t for file sizes, size_t for string " .STR "lengths" .STR ")." .STR "\nWin32 is tied to 32 bit semantics. Porting to a 64 bit UNIX p latform takes great care (but doing so will fix many bad assumpt ions)." .STR V_SPACE <56 389 139> "\nWin32 little-endian by definition. " .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tAll data file reading/writing code must be fixed to work on big endian processors." END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (2422,378) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-46 449> T_PNTS (0,449)(0,0)(5155,0)(5155,580)(0,580)(0,449)(5155,449) .STR "Porting Summary." .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (230,2602) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <11 279> T_PNTS (0,279)(0,0)(8865,0)(8865,4269)(0,4269)(0,279)(8865,279) .STR V_SPACE <56 389 139> "Bear in mind other UNIXs than Linux when porting." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tMaking code portable across POSIX platforms is worthwhile i n the long run (not tied to single platform)." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 139> SIZE 280000 "\nWeed out non-portable APIs." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tStudy POSIX specifications when deciding what to APIs to us e." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 139> SIZE 280000 "\nPort with 64 bit platforms in mind." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\t32 bit platforms (such as Win32) will become legacy very qu ickly." END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES SLIDE_INFO SLIDE_STYLE <0 -1 1> LAYOUT_ID <1 2 12 12 12> END SLIDE_INFO PICTURE .TMP AT (267,228) RECOLOR ON TEMPLATE_FLAGS <1 0 0 0> T_POS <267 228 9743 2045> .TXT AT (3318,390) RECOLOR ON TEMPLATED ON BACKFILL <21 21 0 0 0 0 0> LINEFILL <30 30 5 1000 0 0 0> THICKNESS 1 STYLE 0 PARA <0 0 0 0 1000 31 0 111> V_SPACE <0 611 0> SIZE 440000 HOR_JUST CENTER L_SPACE 611 MARGINS <0 0 0 0> TXTXYOFF <-45 440> T_PNTS (0,440)(0,0)(3365,0)(3365,451)(0,451)(0,440)(3365,440) .STR "References." .TMP AT (267,2463) RECOLOR ON TEMPLATE_FLAGS <2 3 0 0> T_POS <267 2463 9743 7366> .TXT AT (224,2324) RECOLOR ON TEMPLATED ON BACKFILL <18 18 0 0 0 0 0> PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 444 139> SIZE 280000 BOLD OFF HOR_JUST LEFT L_SPACE 444 TXTXYOFF <11 281> T_PNTS (0,281)(0,0)(8953,0)(8953,5034)(0,5034)(0,281)(8953,281) .STR V_SPACE <56 389 42> "Win32 API definitions." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tCheck out MSDN site at microsoft.com." .STR "\n\t\"Advanced Windows Programming\" : Jeffrey Richter." .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 42> SIZE 280000 "\n" .STR "Cygnus/RedHat : Cygwin32 product." .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\tAn excellent example of how to map POSIX -> Win32." .STR "\n\tAllows your new UNIX port to continue running on Windows !" .STR PARA <-500 500 -500 1 1000 31 2 108> V_SPACE <56 389 42> SIZE 280000 "\nPOSIX Spec: IEEE document." .STR "\nUNIX pthreads books :" .STR PARA <-500 1000 -500 1 1000 31 2 108> V_SPACE <28 333 69> SIZE 240000 "\n\t\"Programming with POSIX Threads\": Dave Butenhof" .STR "\n\t\"Pthreads Programming\": Dick Buttlar & Jacqueline Farrell (O'Reilly book)." END PICTURE NOTES .GRP BACKFILL <18 18 5 0 0 0 0> LINEFILL <19 18 5 1000 0 0 0> THICKNESS 42 STYLE 1 PARA <0 0 0 0 1000 1 0 111> V_SPACE <0 333 0> BOLD ON L_SPACE 333 MARGINS <166 166 333 83> .TMP AT (250,250) RECOLOR ON TEMPLATE_FLAGS <5 14 0 0> T_POS <250 250 7249 4875> .VOID .TMP AT (250,5125) RECOLOR ON TEMPLATE_FLAGS <6 15 0 0> T_POS <250 5125 7249 9749> .VOID END .GRP END NOTES *END GRAPHICS