Unix to Windows Porting Dictionary for HPC


Function List


The process of porting any application from one environment to another can often be more complicated than many developers would assume at first inspection. The structure of the program, the build environment, and conversion constraints imposed by changing platforms can all be elements affecting the porting process and amount of effort required. While the majority of source code often compiles without modification on different platforms, there are almost always differences that force developers to modify their application in some way. This is particularly true when the platforms differ in fundamental design decisions; for example, the threading models are quite different in Windows and Unix, and so developers must ensure that any calls manipulating threads are dealt with correctly in each environment. However, by being aware of the potential issues and having a plan for dealing with them, the job of porting can be made much less frustrating.

The tasks involved in porting software can be divided into five phases:

  1. Understand the function and structure of the program you are porting.
  2. Assess the current structure to find all of the places in the program where it interfaces with the underlying operating system.
  3. Refer to a conversion dictionary to see the best approach to modifying each call to work in the new environment.
  4. Make the necessary modifications and test the result for functionality in the new environment.
  5. Document all changes with the why -- and the how -- of the change.

The goal of this dictionary is to provide a resource for step 3; a reference for developers to quickly translate between calls on Unix platforms and their Windows equivalent.

Using the Dictionary

This dictionary is organized by Unix calls. Each entry show the Unix function, its Windows equivalent (if it exists), required header files, an example of use, and related discussion. As you (or your compiler) discovers functions that are platform-specific or otherwise need modification, you can look up the offending function to find out what changes should be done. Information not specific to a function as well as overall suggestions, strategies and links to other resources can be found in the Porting Tips.

We want to hear from you!

The inital selection of entries was chosen by surveying several popular, cross-platform libraries and applications from a wide range of fields -- everything from high-performance mathematical libraries to audio and video editing applications. We continue to add entries; to be notified of the latest updates, subscribe to the RSS feed. Of course, given the breadth of functions to cover, the information you need for your particular application may not be inlcuded yet. If you can't find what you're looking for, please let us know in the comments below. Our team of developers and engineers will do our best to add the information you need.

blog comments powered by Disqus