You Are Here:

Community: Blogs

Harry Li's Forum Nokia Blog

Limitation on Open C which matters HUGE project like Mozilla

kcomex | 03 June, 2008 16:53

Open C is a quite powerful tool when porting open source projects to Symbian OS platform. But a mobile kitty is not a desktop monster, it doesn't have a so powerful kernel, especially you encountered some design limitations. For small projects which don't utilize lower or system level functions, you will wield Open C without any pain. However, projects as large as Mozilla will meet the limitations and avoid using incomplete or absent functions. So marking those limitations with good documentation and practical experiences is very important. Here I will try to tell you some of my experiences.

First of all, you need to read Open C documents carefully, Nokia and Symbian try to explain every limitation they know as clear as possible. So you don't need go discussion board and ask questions before check the documents. *BUT ACTUALLY*, the problem is not all about checking Open C documents, there are possibilities the problem is not caused by Open C but your code. In this case, the situation is not easy. You need practical experiences from others, by talking with colleagues or searching discussion board.

Here comes the body. The most incomplete group is libc Signal Handling, but what's lucky is we can find absence of these functions, you don't need to determine where the problem comes from, your code or Open C. The second hard one to over come is using posix_spawn() instead of fork() and exec(). Here I would give you a suggestion, read the complete fork() manual and compare the difference between posix_spawn(). Then check the context of your code, see if these differences applied. This technique is not so easy, even there are further hidden side effect, for example "In the child process created with popen3/popen/system/posix_spawn, operations on the inherited file may cause a panic." in P.I.P.S. V1.3 Release Notes. Bear in mind those side effects from practice, then the job would be less tough.

With two big stop showers ahead, I think the most important is not getting those limitations one by one, but a skill to find if the bug comes from _my_ code or Open C. Once the debug tricks are at hand, there won't be anything "won't fix" Wink

 

RSSComments

You must login to post comments. Login
 

Rate This

 
 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia 
RDF Facets: qdcZdescriptionQSxkcomeE78E20E7cE2003E20JuneE2cE202008E2016E3a53E20OpenE20CE20isE20aE20E71uiteE20powerfulE20toolE20whenE20portingE20openE20sourceE20projectsE20toE20SymbianE20OSE20platformE2eE20ButE20aE20mobileE20kittyE20isE20notE20aE20desktopE20monsterE2cE20itE20doesnE27tE20haveE20aE20soE20powerfulE20kernelE2cE20especiallyE20youE20encounteredE20someE20designE20limitationsE2eE20ForE20smallE20projectsE20whichE20donE27tE20utilizeE20lowerE20orE20systemE20levelE20functionsE2cE20youE20willE20wieldE20OpenE20CE20withoutE20anyE20painE2eE20HoweverE2cE20projectsE20asE20largeE20asE20MozillaE20willE20meetE20theE20limitationsE20andE20avoidE20usingE20incompleteE20orE20absentE20functionsE2eE20SoE20markingE20thoseE20limitE2eE2eE2eX qdcZidentifierQSxhttpE3aE2fE2fblogsE2eforumE2enokiaE2ecomE2fblogE2fharryE2dlisE2dforumE2dnokiaE2dblogE2f2008E2f06E2f03E2flimitationE2donE2dopenE2dcE2dwhichE2dmattersE2dhugeE2dprojectE2dlikeE2dmozillaX qdcZpublisherQUxhttpE3aE2fE2fswE2enokiaE2ecomE2fidE2fc764fd1cE2d8b06E2d499aE2d9a6aE2d17c3903d5a65E2fforumE5fnokiaE5fcrawlerE5fagentX qdcZtitleQSxHarryE20E4ciE27sE20ForumE20NokiaE20BlogE20E7cE20E4cimitationE20onE20OpenE20CE20whichE20mattersE20HUGE45E20projectE20likeE20MozillaX qdcZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qdcZtypeQUqfntypeZBlogContentQ qdcZtypeQUqfntypeZBlogE45ntryQ qdcZtypeQUqfntypeZCommunityContentQ qdcZtypeQUqfntypeZE52esourceQ qdcZtypeQUqfntypeZWebpageQ qdcZtypeQUqmarsZManagedE52esourceQ qdcZtypeQUqwebZInformationE52esourceQ qdcZtypeQUqwebZPageQ qdcZtypeQUqwebZE52esourceQ qdcZtypeQUqrdfsZE52esourceQ qrssZdescriptionQSxkcomeE78E20E7cE2003E20JuneE2cE202008E2016E3a53E20OpenE20CE20isE20aE20E71uiteE20powerfulE20toolE20whenE20portingE20openE20sourceE20projectsE20toE20SymbianE20OSE20platformE2eE20ButE20aE20mobileE20kittyE20isE20notE20aE20desktopE20monsterE2cE20itE20doesnE27tE20haveE20aE20soE20powerfulE20kernelE2cE20especiallyE20youE20encounteredE20someE20designE20limitationsE2eE20ForE20smallE20projectsE20whichE20donE27tE20utilizeE20lowerE20orE20systemE20levelE20functionsE2cE20youE20willE20wieldE20OpenE20CE20withoutE20anyE20painE2eE20HoweverE2cE20projectsE20asE20largeE20asE20MozillaE20willE20meetE20theE20limitationsE20andE20avoidE20usingE20incompleteE20orE20absentE20functionsE2eE20SoE20markingE20thoseE20limitE2eE2eE2eX qfnZdistributionQUxhttpE3aE2fE2fblogsE2eforumE2enokiaE2ecomE2fX qfnZtopicQUqfnTopicZcppQRqdcZtypeQUqrdfsZE52esourceQRqmarsZrelevanceQNx100X qfnZtopicQUqfnTopicZopenE5fcQRqdcZtypeQUqrdfsZE52esourceQRqmarsZrelevanceQNx100X qfnZtopicQUqfnTopicZtestingQRqdcZtypeQUqrdfsZE52esourceQRqmarsZrelevanceQNx100X qfnZtypeQUqfntypeZBlogContentQ qfnZtypeQUqfntypeZBlogE45ntryQ qfnZtypeQUqfntypeZCommunityContentQ qfnZtypeQUqfntypeZE52esourceQ qfnZtypeQUqfntypeZWebpageQ qfnZupdatedQDx2008E2d06E2d03X qfnZuserE5ftagQSxopenE2dcE2fcE2bE2bX qfnZuserE5ftagQSxsymbianE2dcE2bE2bX qfnZuserE5ftagQSxtestingX qmarsZdescriptionQSxkcomeE78E20E7cE2003E20JuneE2cE202008E2016E3a53E20OpenE20CE20isE20aE20E71uiteE20powerfulE20toolE20whenE20portingE20openE20sourceE20projectsE20toE20SymbianE20OSE20platformE2eE20ButE20aE20mobileE20kittyE20isE20notE20aE20desktopE20monsterE2cE20itE20doesnE27tE20haveE20aE20soE20powerfulE20kernelE2cE20especiallyE20youE20encounteredE20someE20designE20limitationsE2eE20ForE20smallE20projectsE20whichE20donE27tE20utilizeE20lowerE20orE20systemE20levelE20functionsE2cE20youE20willE20wieldE20OpenE20CE20withoutE20anyE20painE2eE20HoweverE2cE20projectsE20asE20largeE20asE20MozillaE20willE20meetE20theE20limitationsE20andE20avoidE20usingE20incompleteE20orE20absentE20functionsE2eE20SoE20markingE20thoseE20limitE2eE2eE2eX qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX qrdfZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qrdfZtypeQUqfntypeZBlogContentQ qrdfZtypeQUqfntypeZBlogE45ntryQ qrdfZtypeQUqfntypeZCommunityContentQ qrdfZtypeQUqfntypeZE52esourceQ qrdfZtypeQUqfntypeZWebpageQ qrdfZtypeQUqmarsZManagedE52esourceQ qrdfZtypeQUqwebZInformationE52esourceQ qrdfZtypeQUqwebZPageQ qrdfZtypeQUqwebZE52esourceQ qrdfZtypeQUqrdfsZE52esourceQ