Platform independent proc interface

Similar documents
¾ ÍÆ ÌÁÇÆ Ä ËÈ Á Á ÌÁÇÆ ÒÚ ÖÓÒÑ ÒØ ½ º½ ÓÖÑ Ø Ò º º º º º º º º º º º º º º º º º º º º º º º º ½ º½º½ Ö ØÓÖÝ ÒØÖ º º º º º º º º º º º º º º º º º º

Metadata Stat-ahead DLD

Ä Á»Ä Á Ä ÖÙ ÖÝ ¾¼¼ ½ ÙÒØ ÓÒ Ð Ô Ø ÓÒ Ä Ó ÓÒ Ø Ó ÓÙÖ Ô ÖØ ÐÙÐ Ø ÓÒ ÓÖ Ô Ö ØÝ ÙÔ Ø Ò Ò Ø Ö ÓÒ ØÖÙØ Ò º ËØÖ Ô Ñ Ò Öº ÁØ ÓÒØ Ò Ø ÓÔ Ö Ø ÓÒ Ù» Ö ÑÓÚ» ÐÓÓ

CMD MDS Recovery DLD

ÚÓ Ù ØÖ Ó Ø Ö ÓÙÒØ Øµ ØÖÙØ Ø ÒÓ Ø Ñµ» Ø ÚÓ Ù ØÖ Ó Ø Ö ÓÙÒØ ÔÙص ØÖÙØ Ø ÒÓ Ø Ñµ» Ø ØÖÙØ Ù ØÖ Ó Ý Ö Ò Ñ ½¼ Ô ÒÓ Ø Ó» Ó Ý Ó» ØÖÙØ Ù ØÖ Ù Ø Ø ¾ Ñ Ü Þ» Ò Ø

Version-Based Recovery DLD

Ì ÓÑÔÙØ Ð Ñ Ò ÓÒ Ó ÌÖ Ó ÁÒ Ò Ø À Ø ÊÙ ÐÐ Å ÐÐ Ö ÂÙÐÝ ¾ ¾¼¼ Ì Ö Ø ÓÙÖ Ø ÓÒ Ó Ø ÖØ Ð ÔÔ Ö ÔØ Ö Ó È º º Ø Ø Ø ÍÒ Ú Ö ØÝ Ó Ó ÙÒ Ö Ø ÙÔ ÖÚ ÓÒ Ó ÊÓ ÖØ Áº ËÓ

ÁÒÔÙØ Ò ÇÙØÔÙØ ÏÓÐ Ò Ë Ö Ò Ö ÏÓÐ Ò ºË Ö Ò ÖÖ ºÙÒ ¹Ð ÒÞº º Ø Ê Ö ÁÒ Ø ØÙØ ÓÖ ËÝÑ ÓÐ ÓÑÔÙØ Ø ÓÒ ÊÁË µ ÂÓ ÒÒ Ã ÔÐ Ö ÍÒ Ú Ö ØÝ Ä ÒÞ Ù ØÖ ØØÔ»»ÛÛÛºÖ ºÙÒ ¹Ð

ØÖ Ø Ì Î Ö ÈÖÓ Ö ÑÑ Ò Ä Ò Ù ÁÑÔ Ñ ÒØ Ø ÓÒ ÔÖÓ Ø Ú ÓÔ ÓÖÑ Ý Ú Ö ÑÔ Ñ ÒØ Ø ÓÒ Ó Ø Ë Ñ ÔÖÓ Ö ÑÑ Ò Ò Ù º Ì Ö ÔÓÖØ ÓÙÑ ÒØ Ø Ú Ô ÈÖ Ë Ñ Ò Ù Ù ØÓ ÔÖÓ Ö Ñ Ø Ú

Ì ËØ Ò Ö Ä Ö ÖÝ ÏÓÐ Ò Ë Ö Ò Ö ÏÓÐ Ò ºË Ö Ò ÖÖ º Ùº Ø Ê Ö ÁÒ Ø ØÙØ ÓÖ ËÝÑ ÓÐ ÓÑÔÙØ Ø ÓÒ ÊÁË µ ÂÓ ÒÒ Ã ÔÐ Ö ÍÒ Ú Ö ØÝ Ä ÒÞ Ù ØÖ ØØÔ»»ÛÛÛºÖ º Ùº Ø ÏÓÐ Ò

½ Ê Ú Û Ó ÆÒ ÕÙÓØ ÒØ ¾ ÇÖØ Ó ÓÒ Ð ÒÚ Ö ÒØ ÓÙ Ð Ö Ø ÓÒ Ý ÕÙÓØ ÒØ Ñ Ô ÇÖ Ø ÓÖÖ ÔÓÒ Ò Ü ÑÔÐ Ó ÓÖ Ø ÓÖÖ ÔÓÒ Ò Ü ÑÔÐ Ø Ò ÓÖ ÔÖÓ ÙØ Ü ÑÔÐ ÓÒØÖ Ø ÓÒ Ñ Ô ÇÔ Ò


¾ Å Ö ÒÓÚ Ò Ã ÙÖ ÁÒ Â Ú Ø ÕÙ Ñ Ø Ó Û ÓÛ ÓÑÔ Ö Ò Ó Ø Ú Ù ÓÔ¹ ÔÓ ØÓ Ù Ò Ø ³ ÓÔ Ö ØÓÖ Û ÓÑÔ Ö Ó Ø ÒØ Ø ÓÚ ÖÖ Ò Ò Ñ ÓÖ ØÝ Ó º ÓÓ ÔÖÓ Ö ÑÑ Ò Ñ Ø Ó ÓÓ Ý Ù Ø

Ë Ø Ó ÒÙÑ Ö Ò Ø Ö Ö ÔÖ ÒØ Ø ÓÒ ÁÒ Ø ÓÙÖ Û Û ÐÐ ÒØ Ö Ø Ò Ø Ó ÒÙÑ Ö º ÁÒ ÓÑÔÙØ Ö Ò Û Ö ÓÒ ÖÒ Ý Ø ÕÙ Ø ÓÒ ÓÛ Ó Û Ú Ù Ø Ø ÓÙÖ ÔÓ Ð Ì Û Ý ÒÙÑ Ö Ø ÓÒ Ý Ø Ñ

º Ö ÓÚ ÖÝ ÑÓÒ ØÓÖ ÔÖÓ º º º º º º º º º º º º º º º º º º º º º º º ½ º Ø ÓÒ ÔÖÓ º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ º º½ ÓÚ ÖÚ

x = x 1x 2 x (p-1)x x = 3 x = 3 x = 3 x = 3 0 x 1 x 2 x... (p-1)x

ßÒ Ò Ø ÒØ Ö ÒØ Ý ÒØ Ú Ò µ ß Ú Ö ÒØ ÓÛ Ñ Ü ÓÛ ÖÖ Ý Þ Ú µ ¹ ½ ÒÚ Ö ÒØ ÒØ ÒØ Ò ½ Ò ÓÛ ÒØ µ ÒØ µµ Û ÓÛ µ ß Ñ ÓÛ µ» ¾ Ü Ú Ñ Ý Üµ ß Ö ØÙÖÒ Ñ Ý Üµ ß Ñ ¹ ½ ß

Ø Ø ÔÖÓÚ ÒÑ Ø ÓÒ ØÝÔ º ÌÖ Ø ØÝÔ Ò Ø ÓÒ Ò»ÓÖ Ø Ø Ñ Ñ Ö Ø Ò Ø ØÖ Øº Ý ØÖ Ø Ø Ø Ó Ò Ò ÓÔ Ö Ø ÓÒ Ö Ø ØÝÔ º ÈÓ Ý Ø Ø Ñ Ñ Ö ÙÒØ ÓÒ Ò Ø ÔÓ Ýº Ý ÑÔ Ñ Ô Þ Ø ÓÒ

Ø Ñ Ñ Ò µ Ú Ù ¾ ¾ ½ ÓÒØ Ò Ö Ú Ù Ú Ù µ ÔÓ Ö Ø Ö ØÓÖ Ú ØÓÖ Ø Ö Ø Ø ÓÚ Ö ÓÒØ Ò Ö Ú ØÓÖ Ø Ö ØÓÖ Ø ÓÒØ Ò Öº Ò µ Ø ÓÒØ Ò Öº Ò µ Ø µ Ù Ø Ñ Ø Ö Ø ÓÒ ÓÒØ Ò Öº

ÁÒØÖÓ ÙØ ÓÒ ØÓ ÓÑÔÙØ Ö ÈÖÓ Ö ÑÑ Ò Ò Ü Ñ ÂÙÒ ½ ¾¼¼ È ½ Ü Ö ½ ¾ ½ Å Ö µ µ ÓÒ Ö Ø ÓÓÛ Ò Ñ Ø Ó ÔÙ ÚÓ ÒØ ÒØ µ ß ¼ ¼µ ß Ö ØÙÖÒ ÒØ ¼µ ß ËÝ Ø ÑºÓÙغÔÖ ÒØÒ Ò Ø

½º¾ Ò Ø ÓÒ Ì Ò Ó Ø ÓÚ ÕÙ Ø ÓÒ Ò ÓÖÑ Ð Þ Ý Ø ÓÐÐÓÛ Ò Ò Ø ÓÒº Ò Ø ÓÒ ½ È Ù Ó Ê Ò ÓÑ ÙÒØ ÓÒ Ñ Ðݵ Ñ ÐÝ ¾ ¼ ½ ¾Æ ÐÐ Ñ ÐÝ Ó Ð µ Ä µµ È Ù Ó Ê Ò ÓÑ ÙÒØ ÓÒ ¾

Dagstuhl Seminar Proceedings 05451Dagstuhl Seminar Proceedings Beyond Program Slicing

Æ ÛØÓÒ³ Å Ø Ó ÐÓ Ì ÓÖÝ Ò ËÓÑ Ø Ò ÓÙ ÈÖÓ ÐÝ Ò³Ø ÃÒÓÛ ÓÙØ Ú º ÓÜ Ñ Ö Ø ÓÐÐ

ÅÓØ Ú Ø ÓÒ Ø Ú Øݹ ØÖ Ú Ð Ñ Ò ÑÓ Ð Ò Ô Ö ÓÒ Ð Þ ÖÚ ÓÒ Ñ ÖØÔ ÓÒ ¾» ¾

ÓÖ Ø ÁÒØ Ð ÔÖÓ ÓÖ Ñ Ðݺ Ê Ö Û ÒØ Ò Ò Ö Ð ÖÓÙÒ Ò Ñ Ð Ö ÔÖÓ Ö Ñ¹ Ñ Ò ÓÙÐ ÓÒ ÙÐØ ÔÔÖÓÔÖ Ø Ø ÜØ ÓÓ Ò ÓÒ ÙÒØ ÓÒ Û Ø Ø ÔÖÓ ÓÖ Ö Ö Ò Ñ Ò¹ Ù Ð ÔÙ Ð Ý ÁÒØ Ð Ò

Strong normalization of lambda-bar-mu-mu-tilde-calculus with explicit substitutions

The Enigma machine. 1 Expert teams 25 mins. 2 Mixing the teams 30 mins. 3 Coding and decoding messages 1 period

dis.08 dis.09 dis.10 dis.11

Ø Ñ Ò Ò ÙØÙÑÒ ¾¼¼¾ Ò Ò Ö ÕÙ ÒØ ÐÓ µ Ø Û Ø ØÖ ØÖÙØÙÖ ½ ȹØÖ È¹ ÖÓÛØ ÄÇË Ì È¹ØÖ Ø ØÖÙØÙÖ È¹ ÖÓÛØ Ð ÓÖ Ø Ñ ÓÖ Ò Ò ÐÐ Ö ÕÙ ÒØ Ø ÄÇË Ì Ð ÓÖ Ø Ñ ÓÖ Ò Ò Ö ÕÙ

Ä ÖÒ Ò ÖÓÑ Ø Ö Ëº Ù¹ÅÓ Ø Ð ÓÖÒ ÁÒ Ø ØÙØ Ó Ì ÒÓÐÓ Ý Ä ØÙÖ ½ Ì Ä ÖÒ Ò ÈÖÓ Ð Ñ ËÔÓÒ ÓÖ Ý ÐØ ³ ÈÖÓÚÓ Ø Ç ² Ë Ú ÓÒ Ò ÁËÌ ÌÙ Ý ÔÖ Ð ¾¼½¾

Ö Ò ÁÅ ÔØ Ö Ê ÕÙ Ö ÔØ Ö ½¼ ½ Ò ½ º ÄÏÀ ØÓ ÖØ Ð ÁÒØ ÐÐ Ò ÁÒØÖÓ ÙØ ÓÒ ¹ ËÔÖ Ò ¾¼½ Ë º ÓÙ ÖÝ Ë Ù¹Û ¹Ö µ ÖØ ¼¾µ ¾¹ º º ÓÙ ÖÝ ½ ÁÒ ØÖÙØÓÖ³ ÒÓØ ÖÙ ÖÝ ½ ¾¼½

ÓÒØ ÒØ ½ ÇÚ ÖÚ Û ½ ¾ Ö Ø ØÙÖ Ð Ö ÔØ ÓÒ ½ ¾º½ Ê Ø Ö º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½ ¾º¾ ÙÒ Ñ ÒØ Ð ÌÝÔ º º

ÝÓÒ ÀÝÔ ÖØÖ Ï Ø ÓÑÔÓ Ø ÓÒ Å Ø Ó Ï Ø ÓÙØ ÓÑÔÓ Ø ÓÒ ÀÙ Ò Ò Î ØÓÖ ÐÑ Ù Ô ÖØ Ñ ÒØ Ì ÒÓÐÓ ÍÒ Ú Ö Ø Ø ÈÓÑÔ Ù Ö Ö ÐÓÒ ËÔ Ò Ù º Ò Ú ØÓÖº ÐÑ Ù ÙÔ º Ù ØÖ Øº Ì Ò

A B. Ø ÓÒ Left Right Suck NoOp

ÇÙØÐ Ò ÁÒØÖÓ ÙØ ÓÒ º º ÓÙ ÖÝ ¾ ÁÒ ØÖÙØÓÖ³ ÒÓØ Å Ò Ñ Ü Ð ÓÖ Ø Ñ ÐÔ Ø ÔÖÙÒ Ò

Ë ¼ Ë Ò Ü Ñ Ò Ø ÓÒ ÈÊÁÄ ¾¼¼¾ ÉÙ Ø ÓÒ ½º ½¼ Ñ Ö È ÖØ µ Ñ Ö Ä Ò Ö ÓÖÔºÓÑ Ò Ò Ø Ö ½ º º½½ º¼º Ö Ô ÒØÓ ÕÙ Ý Þ Ù Ò Ø ½ ¾ µº ÓÑÔ Ø Ø ÓÓÛ Ò Ø Ö Ò Ø ÓÙÖ Ù Ò Ø

Á ÒØ Ò Ò Ø Ò ØÙÖ ÓÒ Ø Ò Ó Ø ÝÑ ÓÐ Û ÓÙÖ Ò Ø Ò ÒÓØ Ø Ø ÓÖÝ Ó Ò ØÙÖ Ò Ö Ø Ý Ò Ü ÓÑ ÅÓ µ ÒÓØ Ø Ð Ó ÐÐ ÑÓ Ð Å Ó Ò ØÙÖ Ù Ø Ø Å Û Ð ÅÓ Ò µ ÅÓ µ Å Ò µº Ï Ó Ø



¾ ÓÖÔÙ Ôк ÓÖÔÓÖ µ ÓÖÔÙ ÓÐÐ Ø ÓÒ Ó Ø ÜØ µ ÓÖ ÙØØ Ö Ò ½¼ Ø ÒÝ ½¼ Ö ÓÒ Ð ½¼ ½¾ ÙÖÖ ÒØ Ð Ð Ñ Ø ÓÖ ÙÒ ÒÒÓØ Ø Ø Ì ÑÓ Ø Ú ÐÙ Ð ÓÖÔÓÖ Ö Ø Ó Ø Ø ÓÙÖ Ò ØÙÖ ÐÐÝ

Chapter 9. Trapezoidal Maps. 9.1 The Trapezoidal Map

ÇÙØÐ Ò

È Ö Ø ² ÑÔ Ö Ø Ò ÓÖÑ Ø ÓÒ ÓÖ Ñ È Ö Ø Ò ÓÖÑ Ø ÓÒ ÈÐ Ý Ö ÒÓÛ ÓÙØ Ø ÔÖ Ú ÓÙ ÑÓÚ Ó ÓÔÔÓÒ ÒØ º º º Ð ¹ËØ Û ÖØ Ñ º ÁÑÔ Ö Ø Ò ÓÖÑ Ø ÓÒ ÈÐ Ý Ö Ó ÒÓØ ÒÓÛ ÓÙØ Û

ÓÒØ ÒØ ¾

ν = fraction of red marbles

ÇÙØÐ Ò Ó Ø Ð ÅÓØ Ú Ø ÓÒ ÔÓÐÝÒÓÑ Ð Ú ÓÒ ÒÓ Ò ÓÖ ÝÐ Ó ÙØÓÑÓÖÔ Ñ µ ÑÓ ÙÐ ÕÙ ¹ÝÐ µ ØÖÙ¹ ØÙÖ ÖĐÓ Ò Ö ÓÖ ÑÓ ÙÐ Ú ÐÙ Ø ÓÒ Ó ÖÓÑ ÓÖ Ö ÓÑ Ò Ò¹ ÐÙ Ò ÓÔÔ Ó µ Ü Ñ

edges added to S contracted edges

½ ÁÒØÖÓ ÙØ ÓÒ ÒÓÑ ÈÓÖØ Ð Û ¹ ÒØ Ö Ø Ú ÓÑÔÙØ Ø ÓÒ Ð ÔÐ Ø ÓÖÑ ÓÖ Ø Ò Ð¹ Ý Ò Ñ Ò Ò Ó ÒÓÑ Ø º Ï Ñ ØÓ ÒØ Ö Ø Ø ÔÖ Ñ ÖÝ ÒÓÑ Ø ÙÒØ ÓÒ Ð ÒÓÛÐ Ò Ò ÐÝØ Ð ØÓÓÐ Û

ËÌ Ä Å Ä Å ÌÁÇÆ ÂÓ Ò Ìº Ð Û Ò Ô ÖØÑ ÒØ Ó Å Ø Ñ Ø ËØ Ø Ø Ò ÓÑÔÙØ Ö Ë Ò ÍÒ Ú Ö ØÝ Ó ÁÐÐ ÒÓ Ø Ó Â ÒÙ ÖÝ ¾¼¼¼ Ø ØÓ Ø Ñ ÑÓÖÝ Ó ºÁºÅ Ð Úº ÁÒ ½ ÖÞ ÓÖÞÝ Û Ø Ö

Ð Ò ØÓ ØØ Ö Ò ÔÔÖÓÜ Ñ Ð ØÝ Ö ÙÐغ Ì ÓÙÖ Ô Ö Ñ ØÓÛ Ö Ø Ø Ö Ò ÔÔÖÓÜ Ñ Ð ØÝ Ö ÙÐØ Ò Ô Ö Ý Ø Ô Ô Ö Ó È Ô Ñ ØÖ ÓÙ Ò Î ÑÔ Ð ÓÒ ÌÖ Ú Ð Ò Ë Ð Ñ Ò ÔÖÓ Ð Ñ µ Ø

Ò Ø ÓÒ ÃÒÓØ ÃÒÓØ Ò Ê Ñ Ø Ö ÑÓÚ Ö ÒØ Ð Ñ Ò Ó Ë ½ ÒØÓ Ê Ö ÐÐ ÒÓØ º Ì ØÛÓ ÒÓØ Ã ½ Ò Ã ¾ Ö Ö Ö ØÓ Ø Ñ ÓÒ Ò ÑÓÚ ÒØÓ Ø ÓØ Ö º º Ø Ö Ö ÒØ Ð µ Ñ ÐÝ Ó ÒÓØ Ô Ö

Ö Ô ÓÒ Ø Ó ØÛÓ Ø Î Ò ÒÓØ Ý Î µº Ë Ø Î Ò Ø ÒÓÒ¹ ÑÔØÝ Ø Ó Ú ÖØ ÓÖ ÒÓ µ Ò Ø Ó Ô Ö Ó Ú ÖØ ÐÐ º Ï Ù Î µ Ò µ ØÓ Ö ÔÖ ÒØ Ø Ø Ó Ú ÖØ Ò Ò Ö Ô Ö Ô Ø Ú Ðݺ ÅÓÖ Ò

½º»¾¼ º»¾¼ ¾º»¾¼ º»¾¼ º»¾¼ º»¾¼ º»¾¼ º»¾¼» ¼» ¼ ÌÓØ Ð»½ ¼

Abiteboul. publication x author. citation title date 2000 Suciu Data on the Web Buneman

Tensor. Field. Vector 2D Length. SI BG cgs. Tensor. Units. Template. DOFs u v. Distribution Functions. Domain

½ ÁÒØÖÓ ÙØ ÓÒ Ê ÒØ Ö ÙÐØ Ò ÑÔÐ Ñ ÒØ Ø ÓÒ Ó Ø ÔÐ ÒÒ Ö ½ Ú Ö Ø Ò¹ Ø Ö Ø ÓÖ Ù Ø Ð ÔÔÐ Ð ØÝ Ó Ø ÔÐ ÒÒ Ò ÔÔÖÓ ØÓ Ñ ÒÝ Ö Ð ÛÓÖÐ ÔÖÓ Ð Ñ º ÍÒ ÓÖØÙÒ Ø ÐÝ Ø ÔÖ

É ÀÓÛ Ó Ý Ò ² Ö Ò ÁÒ Ö Ò «Ö ÓØ ÑÔ Ù ÔÖÓ Ð ØÝ ØÓ Ö ÙÒ ÖØ ÒØÝ ÙØ Ø Ý ÓÒ Ø ÓÒ ÓÒ «Ö ÒØ Ø Ò º Ü ÑÔÐ ÁÑ Ò Ð Ò Ð ØÖ Ð Û Ø Ò ½ Ñ Ø Ô Ö Ó Ù Ø º ÁÒ Ô Ö ÓÒ Ù Ø

Plot A. Plot B. Plot D. Plot C

ÐÓ Û µ ÅÄ Ó Ò ººº Ð Ò Ö Ó Ü = (,..., Ü Ò ) ººº ÒØ Ó ÛÓÖ Ý = (Ý ½,..., Ý Ò ) ººº Ö Ú ÛÓÖ ¹ ÓÒ Ø ÒØ ÐÓ Û µ Å Ü ÑÙÑ Ä Ð ÓÓ Åĵ Ó Ö Ø Ø ÔÓ Ð Ó Ö Ñ Ò Ñ Þ Ø

ËØÖÙØÙÖ ½ Î Ö ÐÙ Ø Ö ¹ Ò ÒØÖÓ ÙØ ÓÒ ¾ Ì Ø Ì ÈÙÞÞÐ Ì Á ÓÒÐÙ ÓÒ ÈÖÓ Ð Ñ Å Ö ¹ÄÙ ÈÓÔÔ ÍÒ Ä ÔÞ µ È Ö Ø È ÖØ ÔÐ ¾¼º¼ º½ ¾» ¾

Breeze. Stench PIT. Breeze. Breeze PIT. Stench. Gold. Breeze. Stench PIT START

Ú Ò Ø ÐÝ ÒÖ Ò ÓÚ Ö Ø Ô Ø Ú Ö Ð Ý Ö Ò Ø Ï Ø Ö Ð Ø Ø Ø Ò º ÐØ ÓÙ Ø Ò ÐÝ ÓÛ Ø Ø Ø Ú Ö Ø ÓÒ Ò Ø Ô Ö ÔÓÒ ØÓ Ø Ô ÖØ Ð ÖÓÙÒ Ò ÙÒ ÓÖÑ ÓÒØ ÒÙ Ï Ó ÖÚ Ø ÓÒ Ö Ö ¹

ÓÖÑ Ð Þ Ø ÓÒ Ó ÐÓ ÙÖ ÔÖÓÔ ÖØ ÓÖ ÓÒØ Üع Ö Ö ÑÑ Ö Å ÖÙ Î Ò Ù Å Ò Ê ÑÓ Í È»ÍÆÁÎ Ë Ë ÔØ Ñ Ö ¼ ¾¼½ ÑÚÑÖ ÒºÙ Ô º Ö Ñ ÖÙ ºÖ ÑÓ ÙÒ Ú º Ùº Ö Å ÖÙ Ê ÑÓ Í È»ÍÆÁ

ÇÙØÐ Ò Ó Ø Ø Ð ÅÓØ Ú Ø ÓÒ = ¾ ÙÔ Ö ÝÑÑ ØÖ Ò ¹Å ÐÐ ÕÙ ÒØÙÑ Ñ Ò ÆÙÑ Ö Ð Ð ÓÖ Ø Ñ Ò ÒÙÑ Ö Ð Ö ÙÐØ Ü Ø ÓÐÙØ ÓÒ ÙÖØ Ö Ô Ö Ô Ø Ú

function KB-AGENT( percept) returns an action static: KB, a knowledge base t, a counter, initially 0, indicating time

ØÖ Ø Ê Ù Ð ØÖ Ø ØÖ Ø Ø Ö Ñ Ò ØÓÖ Û Ø Ò ØÖÙØÙÖ Ö ÙÐØ Ó Ø Ñ ÒÙ ØÙÖ Ò ØÓÖݺ Ç Ø Ò ÐÐ ÐÓ Ò ØÖ Ø Ö Ñ Ò Û Ò Ø Ö ÒÓ ÔÔÐ ÐÓ Ò Ù Ò Ø ÔÔÐ ÐÓ Ò Ò Ø ØÖÙØÙÖ ³ ÜÔ Ø

SEA = SEA call SEA seq SEA ret,

Ó Ú ÐÙ Ö ÒÚÓÐÚ Ò ÖØ Ò Ô ÖØ Ó Ø ÔÖÓ Ö Ñµ Ò ØÓ ÐÔ Ø Ø ÔÖÓ Ö ÑÑ Ö Ñ Ø º ÁÒ Ø Ø ÐÐÝ ØÝÔ Ð Ò Ù Ø ØÝÔ Ö ÒÓØ Ò ÓÑ Ø Ò Ø Ø Ø Ô ÖØ Ò ÓÑÔÙØ Ø ÓÒ ÙØ Ö Ø Ö ÓÑ Ø Ò

ÓÙÖ ËØ ÁÒ ØÖÙØÓÖ ÓÒØ Ø ËÐ Ñ Ø ÙÐÐ Ö ÐÓÙ Ð Ø ÓÒ ÓÙÖ Û Ø ÇÒ ÍÏ¹Ä ÖÒ Ò ÓÒ ÓÙÖ Û Ø Î ÖÝ Ø Ö ÓÑ ØÓ Ð Ø ÒÓØ Ë ÁÒØÖÓ ØÓ Å Ñص ÇÚ ÖÚ Û Ó Ë ÄÄ ¾¼½ ¾» ¾

ÅÓ Ø Ü Ø Ò ÖÓ ¹ÓÚ Ö Ö ÓÙÖ ÔÖÓÚ ÓÒÐÝ ÐÐÓÛ Ö ÔÖ ÒØ Ø ÓÒ Ñ ÒØ ÇÚ ÖÚ Û ÛÓÖÐ ÔÔÐ Ø ÓÒ Ò Ö ÓÙÖ Û Ø Ö ÝÒØ Ø Ò ¹ Ê Ð Ö ÔÖ ÒØ Ø ÓÒ º Ñ ÒØ ÅÙ Ö Ö Ö ÔÖ ÒØ Ø ÓÒ Ö

arxiv: v25 [math.ca] 21 Nov 2008

ÇÙØÐ Ò È Ý Ð ÓÒ Ø ÓÒ Ò ÓÙ Æ ÙÐ ÄÓÛ¹ Ò ØÝ Ð Ñ Ø À ¹ Ò ØÝ Ð Ñ Ø Ü ÑÔÐ ÜØ ÒØ ÓÒ ØÓÛ Ö ÐÑ Ö Ö Ñ ÒØ Ò

ÁÒ ÙØ Ú ¹ ÙØ Ú ËÝ Ø Ñ Ñ Ø Ñ Ø Ð ÐÓ Ò Ø Ø Ø Ð Ð ÖÒ Ò Ô Ö Ô Ø Ú Æ ÓÐ ÓØ Å Ð Ë Ø ÇÐ Ú Ö Ì ÝØ Ù ÍÒ Ú Ö Ø È Ö ¹ËÙ ÆÊË ÁÆÊÁ ÈÖÓ ¾¼¼

ÓÙÖ ÓÒØ ÒØ Ï Ý Ó Û Ù Ø ÙÒØ ÓÒ Ð ØÝ ÔÖÓÚ Ý Ø Å Ò Ñ ÒØ ËÝ Ø Ñ Ø ÅÓ Ð Ê Ð Ø ÓÒ Ð Æ ØÛÓÖ ÇÇ ÀÓÛ Ó Û Ù ÅË Ê Ð Ø ÓÒ Ð ÑÓ Ð ÓÙÒ Ø ÓÒ Ð ÕÙ ÖÝ Ð Ò Ù ËÉÄ ÔÔÐ Ø

ÇÙØÐ Ò ÖÓÙÒ Ü ÑÔÐ ÔÖÓ Ö Ñ ÒÓ Ñ Ø Ó Ü ÑÔÐ ÒÓ Ì ÓÖÝ ÓÒÐÙ ÓÒ ¾

function GENERAL-SEARCH( problem, strategy) returns a solution, or failure initialize the search tree using the initial state of problem loop do if

ÁÒØÖÓ ÙØ ÓÒ Ö ÔØ Ú ËØ Ø Ø ÁÒ Ö ÒØ Ð ËØ Ø Ø ÀÝÔÓØ Ø Ø Ò ¹ Ô Ú ÐÙ Ø ÖÑ Ò Ø ÓÒ Ó ÑÔÐ Þ ËÙÑÑ ÖÝ Ä ÖÒ Ò Ó¹ Ø ÖÑ Æ ÙÝ Ò Ì ÌÙ Î Ò ½ Æ ÙÝ Ò ÉÙ Ò Î Ò ¾ ½ ÍÒ Ú

ØÖ Ø ÅÙÐØ Ø Ö ÈÖ Ë Ñ Ý Ø Ñ ÔÖÓ Ö ÑÑ Ò Ð Ò Ù ÓÖ ¹ ÙÖ Ò Ý Ø Ñ º ÁØ ÓÒ ÚÐ Ô ÈÖ Ë Ñ Ý Ø Ñ ÔÖÓ Ö ÑÑ Ò Ð Ò Ù Ð Ø Ó Ë Ñ Ú ÐÓÔ Ý Ø ÚÐ Ô ÔÖÓ Øº ÅÙÐØ Ø Ö ÈÖ Ë Ñ

ÈÖÓÚ Ò Ò ÁÑÔÐ Ø ÓÒ È É Ï Ö Ø ÐÓÓ Ø Û Ý ØÓ ÔÖÓÚ Ø Ø Ñ ÒØ Ó Ø ÓÖÑ Á È Ø Ò É ÓÖ È É Ì ÓÐÐÓÛ Ò ÔÖÓÓ ØÝÔ Ò Ð Ó Ù ØÓ ÔÖÓÚ Ø Ø Ñ ÒØ Ó Ø ÓÖÑ Ü È Üµ É Üµµ Ý ÔÔ

È Ö Ø ÑÔÑ ÒØ Ø ÓÒ Ó Å ØÖÓÔÓ ¹À Ø Ò ÑÙØ ÓÒ Ó Å Ö ÓÚ ÔÓ ÒØ ÔÖÓ Ý ÏºËº Ã Ò Ò Âº Å Ö Å Ö ½ Ì» ÓÑ»»Û»Ñ»ÅÓ Ö» ÈÖÓ Ö Ñ»ÅÀºÛ ÙÒ Üµ Ú Ö ÓÒ º¾ º Ä Ø Ø ½¾ ¼ ½¼»¼

ÅÓØ Ú Ø ÓÒ Å ÕÙ Ð ØÝ Ó Ø Ó ØÖ Ò Ô Ö ÒØ ÁÒ Ø ÓÒ Ú ÐÓÔÑ ÒØ ØÖ Ò ÖÖ Û ÓÖ Ò Ð ÙØ ÓÖ Ö Ñ Ò ÐÓÒ Ú ÐÓÔÑ ÒØ ØÓÖÝ Å ÒÝ Ù ØÓÑ Ö»Ù ØÓÑ Ö Ù ÓÑÔÓÒ ÒØ Ó Ñ ÒÝ ÔÖÓ Ø

Ì Ö Ö Ü ÑÔÐ Ó ÒØ Ô Ø ÓÒ Ð Ò Ù Ø Ø ÔÖÓÚ ÓÓ ÙÔ¹ ÔÓÖØ ÓÖ Ô Ý Ò ÒØ Ý Ø Ñ ÒÐÙ Ò Ø ÒØ Ö Ø ÓÒ ØÛ Ò ÒØ º ÒØ ¾ Ò ÒعÓÖ ÒØ ÜØ Ò ÓÒ ØÓ Ç Ø¹ Û ÒÐÙ ÓÒ ÔØ Ù ÖÓÐ ÒØ

ÇÙØÐ Ò ½ À ÙÒØ ÓÒ ¾ Ì ËÀ ¹ ÓÑÔ Ø Ø ÓÒ ÖÝÔØ Ò ÐÝ Ó À ÙÒØ ÓÒ ¾» ¾

ÅÓØ Ú Ø ÓÒ ØÓ Ø ÕÙ Ù Ò ÑÓ Ð Ó ØÖ ÓÛ ÑÓ Ð Ò Ó Ö ¹ Ú Ö ØÖ Ú Ð Ú ÓÖ Ò ÐÝ Ó Ò ØÛÓÖ Ö ÓÛÒ ÓÑÔÙØ Ø ÓÒ Ó ÜÔ Ø Ú ÐÙ ººº Ô Ø ÖÓÙ Ö ÒØ Ð ÕÙ Ø ÓÒ Ð Ò Ö Þ Ø ÓÒ Ó

deactivate keys for withdrawal


½½ º º À Æ Æ º º Í Æ ÒÓØ ÔÓ Ø Ú Ñ ¹ Ò Ø ÙÒÐ Ø ÓÐÐÓÛ Ò ØÖÙ Ø Ö ÓÒ Ù ÔÖÓ Ð Ñ È ½ Û Ø Ò Ð ÐÐ ÓÒ ØÖ ÒØ Û Ó ÓÖÑ Ù Ø ØÓ Ñ Ò ¾Ê Ò µ ½ ¾ Ì Ì Ø Ì Ù ÔÖÓ Ð Ñ Ø Ð

ÝØ Ð Ö Ø ÓÒ Ó ÝÒ Ñ ØÖ ÑÙÐ Ø ÓÒ Ó Ø Ú Ñ Ò Ð Ö Ø ÓÒ ÖÓÑ ØÖ ÓÙÒØ Ð Ð Ô Ö Ô Ø Ú Ø Ñ Ø ÓÒ Ó Ô Ø ÓÛ Ø ÛÓÖ Ø Ñ Ø ÓÒ Ó Ñ ÖÓ¹ ÑÙÐ Ø Ú ÓÖ ¾» ¾¾

ÇÆÌ ÆÌ ËÙ Ø Ú ÒØÖÓ ÙØÓÖÝ Ö Ñ Ö Å Ø Ô ÓÖ Ò Ø Ú ÔÔÖÓ Ì Ô ÐÓ ÓÔ Ð Ö Ò À ÖÑ Ò ÙØ Ò Ø Ö Ð Ø ÓÒ Ô ØÓ Ò Ì ÒØ ÖÔÖ Ø Ò Ò Ø ÒØ ÖÔÖ Ø Ö Ò

ÓÒÒ Ø ÓÒ ØÓ Ñ ÞÓÒ Ú Ø Æ Ø Ô ÓÖ ÖÓÑ Û ÖÓÛ Öº ÌÓ Ú Û ËÌÄ Ð ÓÒ ÑÝ Ä ÒÙÜ Ñ Ò Á Ù Æ Ø Ò Å Ò Ö¹ ØÓÖº ÌÓ ÔÖÓ Ù Ø ÇÔ ÒË Ö ÔØ Á Ù ÇÔ ÒË Û Ø Ø³ ÒØ Ö Ø Ø ÜØ ØÓÖ

Î Ö Ð X C = {x 1, x 2,...,x 6 }

M 1 M 2 M 3 M 1 M 1 M 1 M 2 M 3 M 3

Ã Ô ÐÐ Ø ÙÒ Ð ÕÙ Ô Ò ÙÖ ÓÑ Ú ÒØ Ö Ø ÓÒ Ò ÓÑÔ Ø Ø ÓÒ Ä ÙÖ Å ËËÁÇ ÄÈÌÅ ÍÒ Ú Ö Ø È Ö ÎÁ ¾½ ÒÓÚ Ñ Ö ¾¼½

ÓÖÑ Ð ÓÒ ÔØ Ò ÐÝ Ò Ö Ö ÓØ ÖÛ ØÓ Ò ØÓ ÔÖÓ Ò Ó Ô Ø Á Ë ÓÒ Ö Ò º Ì Ö Ö Ö Ð Ø ÔÔÖÓ ØÓ Ø ÓÚ Ø Ø ÔÖÓ Ð Ñº ÓÖ Ò Ø Ò Ø ÓÒ ÔØ Ó Ú ÖØÙ Ð ÓÐ Ö Û ÒØÖÓ Ù Ò ÔÖÓ Ö Ñ

ËÙ Ø ÙÒØ ÓÒ Ð ØÝ Ò Å Ø Ó Ü ÑÔÐ È Ö Ö Ö Ú Ø ÓÒ Ó È Ö Ö ÓÒ Ø ÄÊ( ) Ö ÑÑ Ö ÄÊ(½) È Ö Ö Ò Ö Ø ÓÒ ÓÒ

XOR KEYS S BOXES KEY ADDITION MODULO 2^{256} DIFFUSION LAYER

ÁÒØÖÓ ÙØ ÓÒ Ö ÙÑÙÐ ÒØ Ò Ã ÖÓÚ³ ÔÓÐÝÒÓÑ Ð Ä Ø Ù ÒÓØ Ý Ë Ò Ø ÝÑÑ ØÖ ÖÓÙÔ Ó ÓÖ Ö Òº ÁÖÖ Ù Ð Ö ÔÖ ÒØ Ø ÓÒ Ô ÖØ Ø ÓÒ λ Òº ÆÓÖÑ Ð Þ Ö Ø Ö Ú ÐÙ χ λ (µ) ÓÖ µ

NS Ilist Clist F. F y<=w

Ø ÑÔÐÝ Ù Ø Ø Ø Ø ÔÖÓÓ ÒÓÖÑ Ð Þ Ò Ø ËØÖ Ø ÓÙÒ Ø ÓÒ Ø Ø ÓÖÝ ÔÖ ¹ÑÓ Ð Û Ð Ú Ö ÒØ Ó Ø ÔÖÓÔÓ Ø ÓÒ Ò ØÓ ÔÖÓÚ Ò Ø ÓÖ Ò Ð ÔÖÓÓ º ÁØ ÛÓÖØ ÒÓØ Ò Ø Ø Ø ÓÖ Ò Ð ÒÓ

Communications Network Design: lecture 18 p.1/21

Transcription:

Platform independent proc interface Author: WangDi & Komal 05/07/2008 1 Introduction This document describes how to implement a platform independent proc interface for Lustre. The basic idea is that the platform-independent proc tree will be maintained in kernel base which is similar as linux proc tree(called parameters tree in this HLD). The tree will only be accessed by lctl params command with ioctl. 2 Requirements The parameters tree must be platform-independent, and similar as procfs in linux. Each entry is associated with a name, a value and correspondent functions for read/write. And any related platform-independent stuff should only in libcfs module. The parameters tree is used by both lustre and lnet, so it should be implemented in libcfs. The user tools could extract the data from the parameters tree with binary format, instead of a blob of text currently. 1

3 FUNCTIONAL SPECIFICATION 3 Functional specification 3.1 General Description In the new implementation, lctl provides several APIs for acessing the parameter tree, described in 3.2. The name list in the request (lctl get/set_params) will be expanded by glob in these API, then sent to kernel parameters tree handler inside libcfs module by ioctl interface (might use socket when this parameters tree is in user space). In the handler, the params request will be handled by the callback of lustre/lnet registered in the tree. 2

3.2 API for lctl 3 FUNCTIONAL SPECIFICATION 3.2 API for lctl These APIs are used by lctl to get/set value to the parameters tree. 3.2.1 Read and Write ÒØ Ô Ö Ñ Ö Ö Ô Ø ÒØ Ô Ø Ò ØÖÙØ Ø Ú Ù Ø ÒØ Ó Ø ÒØ ÓÔØ µ ÒØ Ô Ö Ñ ÛÖ Ø Ö Ô Ø ÒØ Ô Ø Ò ØÖÙØ Ø Ú Ù Ø ÒØ Ó Ø ÒØ ÓÔØ µ ÚÓ Ô Ö Ñ Ú Ù Ö ØÖÙØ Ø Ú Ù Øµ parameters Return path: the path of the entry in the tree. path_len: the length for the path. value_list: the entry value list for set/get. offset: offset for read/write. opt_flag: indicates which option is set. Read, >= 0 the read length, < 0 error. Write, >= 0 the written length, < 0 error. Description Read/Write APIs will be used by lctl get/set_params to set/get value of the parameters tree. params_value_free is used to free the list of params_entry. 3.2.2 List ÒØ Ô Ö Ñ Ø Ö Ô Ø Ô ØØ ÖÒ ØÖÙØ Ø ÒØÖÝ Ø ÒØÖݵ ÚÓ Ô Ö Ñ Ø Ö ØÖÙØ Ø ÒØÖÝ Ø ÒØÖݵ ØÖÙØ Ø ÒØÖÝ Ö Ò Ñ» ÆÓØ Ö Ø Ò Ñ Ø Û Ó Ô Ø Ò Ñ ÓÖ Ø ÒØÖÝ» ÒØ Ò Ñ Ò ØÖÙØ Ø ÒØÖÝ Ò ÜØ ÒØ ÑÓ» Ò Ø Û Ø Ö Ø ÒØÖÝ Ö ÓÖ ÒØÖÝ» 3

3.3 API for parameters tree 3 FUNCTIONAL SPECIFICATION parameters Return path_pattern: The path_pattern of the list. It may includes some wild card characters, for example obdfilter.*osc.stats. list_entries: the list of matched entries in params_list. The list being freed in params_list_free. = 0 success, < 0 error. Description These API is used to get or free the lists of the entries. 3.3 API for parameters tree Lctl uses ioctl to access the parameters tree. In the kernel base, the ioctl handler will be in libcfs module. Then both lnet and lustre need to register its own handler in libcfs_ioctl to handle the parameters tree ioctl command. ÒØ ÓÓÒØÖÓ ÙÒ Ò ÒØ Ñ ÚÓ Ö µ parameters cmd: the ioctl command. arg: buffer containing the input. Description The API is used to handle ioctl request. Return = 0 success, < 0 error. 3.4 Parameters tree in kernel base As discussed, the parameters tree will be maintained in kernel base, which functionality is similar as procfs in linux kernel but we intend to make it platform independent unlike procfs which is linux kernel specific. The entries can be added/deleted/lookup in the similar way as its done with procfs interface. 4

3.4 Parameters tree in kernel base 3 FUNCTIONAL SPECIFICATION 3.4.1 params tree structure There will be a unique lustre_params_root (structure lustre_params_entry) for each server node. Each entry is associated with a name, a value and a corresponding read/write callback just like procfs in the linux kernel. The structure is also similar as a proc entry. ØÖÙØÙÖ Ù ØÖ Ô Ö Ñ ÒØÖÝ ØÖÙØ Ù ØÖ Ô Ö Ñ ÒØÖÝ Ô Ù Ö» ÔÓ ÒØ ØÓ Ø Ö Ø Ö Ò» ØÖÙØ Ù ØÖ Ô Ö Ñ ÒØÖÝ Ô Ò ÜØ» ÔÓ ÒØ ØÓ Ø Ò Ø Ò Ó Ø ØÖÙØ Ù ØÖ Ô Ö Ñ ÒØÖÝ Ô Ô Ö ÒØ Ù ØÖ Ô Ö Ñ Ö Ø Ô Ö Ù ØÖ Ô Ö Ñ ÛÖ Ø Ø Ô ÛÖ Ø ØÓÑ Ø Ô Ö ÓÙÒØ Ö Ô Ò Ñ ÒØ Ô Ò Ñ Ò ÖÛ Ñ Ô ÖÛ Ñ Ù ¾ Ô Ú Ö ÓÒ ÚÓ Ô Ø» Ì Ö ÙÑ ÒØ ÓÖ Ø Ö Ò ÛÖ Ø ÒØ Ô ÑÓ» Ö ÓÖ ÝÑ Ó Ò Ò Ó Ø Ù ¾ Ô Ñ» Å ÙÖ Ø ØÖÙØÙÖ Ú» typedef int (lustre_params_read_t)(char *page, char **start, off_t off, int count, int *eof, void *data); typedef int (lustre_params_write_t)(struct file *file, const char user *buffer, unsigned long count, void *data); The structure of the params tree is shown in the figure below: 5

3.4 Parameters tree in kernel base 3 FUNCTIONAL SPECIFICATION 3.4.2 API for the parameters tree There are two groups of API associated with the tree. Updating API: ÒØ Ô Ö Ñ ÒØÖÝ ØÖÙØ Ù ØÖ Ô Ö Ñ ÒØÖÝ Ô Ö Ò Ñ Ù ØÖ Ô Ö Ñ Ö Ø Ö Ù ØÖ Ô Ö Ñ ÛÖ Ø Ø ÛÖ Ø ÚÓ Ø µ ÒØ Ô Ö Ñ Ø ÒØÖÝ ØÖÙØ Ù ØÖ Ô Ö Ñ ÒØÖÝ Ô Ö Ò Ñ µ ØÖÙØ Ô Ö Ñ ÒØÖÝ Ô Ö Ñ ÓÓ ÙÔ ÒØÖÝ ØÖÙØ Ù ØÖ Ô Ö Ñ ÒØÖÝ Ô Ö Ò Ñ µ parameters Return lpe: the parent for add/delete/lookup. name: the name of the added/deleted/lookup entry. In delete_entry, if the name is NULL, it means it will delete the whole subtree under the lpe. read_cb: the read callback for accessing the value attached to the entry. write_cb: the write callback for accessing the value attached to the entry. data: the parameters put to the lpe_data. 6

5 LOGIC SPECIFICATION Read, >= 0 the read length, < 0 error. Write. >= 0 the written length, < 0 error. lookup, if it can find the entry according to the name, if it can not find, return NULL. Description These 3 APIs will be used to add/delete/lookup the entry to the kernel based params tree. 4 Use cases 1. Set/get/list params tree parameters (a) Lctl set/get_params calls parameters lctl API to get/set parameters. (b) In kernel side, the ioctl request will be directed to libcfs module. And libcfs will call the lustre or lnet handler (registered in libcfs module) to handle the request. 2. Add/remove params tree entry (a) OBD calls lprocfs API to add/delete the entry of the tree. (b) In lprocfs code, params updating API will be called to add/delete entry of the tree. 3. Another important use case is the race between obd cleanup (params remove) and params accessing (lookup/read/write), which will be discussed in section 6 State management. 5 Logic specification 5.1 lctl interface 5.1.1 Interface structure Because it requires to output the data with binary format, instead of a blob of string. So the following structure will be used to communicate between parameters tree and lctl command. ØÖÙØ Ô Ö Ñ Ú Ù ÒØÖÝ ÒÙÑ Ô Ö Ñ Ú Ù ØÝÔ ÔÚ ØÝÔ Ù ¾ ÔÚ Ò Ñ Ò 7

5.1 lctl interface 5 LOGIC SPECIFICATION Ö ÔÚ Ò Ñ Ù ¾ ÔÚ Ú Ù Ò Ö ÔÚ Ú Ù Ö ÔÚ Ú Ù ¼» ÓÙ Ù Ö ÔÓ ÒØ Ö ÓÖ Ù Ø ÒØ Ö Ö Ô Ò ÓÒ ÔÚ ØÝÔ When reading or listing entries, params kernel tree will packing the multi entries to the output buffer, then lctl will unpack the entry from the buffer. 5.1.2 lctl utility Current lctl implements set/get_params interface based on several posix system calls like open, read, write, glob and close. All of them are based on local linux procfs. Since we need to achieve platform independence, these linux procfs dependency APIs need to be replaced. The lctl will implement get/set parameters by the APIs defined in Section 3.1. Inside these APIs, they will use ioctl interface to direct the correspondent parameters request to libcfs API. From the input provided by user, the path name and the options set will be seperated. Call params_list to get the matched entry lists according the path name. Call params_read/write to set/get the values of each entries of the list. ÒØ Ø ØÔ Ö Ñ ÒØ Ö Ö Ö Úµ» Ò ÝÞ Ò Ö ØÖ Ú Ø Ô Ö Ñ Ø Ö ÖÓÑ Ö Ò Ö Ú»» Ê ØÖ Ú Ø Ø Ñ Ø Ø Ø Ô Ø Ô ØØ ÖÒ» Ö Ô Ö Ñ Ø Ø Ô Ø ² µ Ø Û µ Ô Ö Ñ Ö ¹ Ò Ñ ¹ Ò Ñ Ò ÓÔ Ù ÓÔ Ù Ò ÓÔØ µ» ÓÛ Ö ÙØ» ¹ Ò ÜØ» Ö Ø Ô Ö Ñ Ø» Ô Ö Ñ Ø Ö µ Ö ØÙÖÒ ¼ 8

5.1 lctl interface 5 LOGIC SPECIFICATION 5.1.3 read/write/list params for lctl Since the path parameters in read/write_params is the exact path of the entry without wildcard characters, so we just need simply pack the correspondent parameters, and then call ioctl. Note: Here, obd_ioctl_data will still be used to here to pack the ioctl request, but the defination should be moved to libcfs. ÒØ Ô Ö Ñ Ö Ö Ô Ø ÒØ Ô Ø Ò Ö Ö Ù ÒØ Ù Ò ÒØ Ó Øµ ØÖÙØ Ó ÓØ Ø Ø ¼» Ô Ø Ô Ö Ñ Ø Ö ØÓ Ø Ö Ø» Ö Ó ÓØ Ô ² Ø ² Ù Þ Ó Ö Ûµµ» ÓÔ Ò Ú Ò ÔÖ Ô Ö ÓÖ Ø ÓÓÛ Ò ÓØ Ú ÓÙ Ö Ø Ö Û Ò Ø Ò Ø Þ» Ö Ó ÓØ Ú Ä ÌÄ Ì È Ê Å Ø µ Ö ¼µ» ËÙ Ø ºÓÙØ ÓÒØ Ò Ø ÓÙØÔÙØ»» ÙÒÔ Ø Ô Ö Ñ Ú Ù ÒØÖÝ ÖÓÑ Ø Ù Ö»» ÓÔÝ Ø ÓÙØÔÙØ ÒØÓ Ö Ù»»» ÙÖ ÔÖ ÒØ Ø ÖÖÓÖº Ö ØÙÖÒ Ö As for params_list, because the path may include some wildcard characters and implementing wildcard characters match in kernel base would be unefficient and complicated, all the match logic would be implemented in params_list(user base) with the help of glibc reg match lib. ÒØ Ô Ö Ñ Ø Ö Ô Ø Ô ØØ ÖÒ ØÖÙØ Ø ÒØÖÝ µ Ö Ô Ö ÒØ Ô Ø ÓÓ Ò Ñ ÒØ Ô Ö ÒØ Ô Ø Ò ØÖÙØ Ó ÒØÖÝ Ó» Ò ÓÛ»» Ó Ø Ø Û Ö Ö Ø Ö Ò Ø Ô Ø Ô ØØ ÖÒ»» ÆÓØ Ï Ò Ù Á Ç Ø ØÓ ÑÔ Ñ ÒØ Ø Ô Ø Û Ö Ñ Ø º Ì ÒØÖÝ Ò Ø Ó Ø ËØÖÙØ Ó ÒØÖÝ Ö Ô Ö ÒØ ÒØ Ô Ø Ò Ö Ø Û Ö 9

5.2 Parameters tree in kernel base 5 LOGIC SPECIFICATION ÒØ Ø Û Ö Ò»» Ó Ø Ö Ø Û Ö Ö Ø Ö Ò Ø ØÓ Ø Ó Ø» Ó Ø Û Ö Ô Ø Ô ØØ ÖÒ Ô Ûµ ØÓ Ó ÒØÖÝ Ô Ø Ô ØØ ÖÒ Ô Ûµ Ó» ½º Ø Ø ÒØÖÝ ÖÓÑ Ó Ø»» ¾º Ê Ø Ù ¹ Ö ÒØÖ ÓÖ Ò ØÓ Ø Ô Ö ÒØ Ó Ø ÒØÖÝ ÆÓØ» º Û Ø Ö Ø Ù ¹ ÒØÖ Ñ Ø Û Ø Ø Û Ö Ò Ø Ò ÓÖ Ù Ö Ø Ù Ö¹ Ò Üص Ñ Ø Ø Û Ö µ ÒØÖݹ Ø Û Ö µ ØÓ Ö ØÙÖÒ ÒØÖݵ ØÓ Ó Ø ÒØÖݵ Û ÑÔØÝ Ó ÒØÝ Ó Øµµ 5.2 Parameters tree in kernel base 5.2.1 General architecture In current implementation, lustre modules use lprocfs interface(in obd_class) to access their procfs entry, where lprocfs is implemented based on linux procfs tree structure(proc_dir_entry) and linux procfs API. But because params_tree and linux procfs has similar structure, so lustre will still use this lprocfs interface to access the params_tree, to avoid to much code changes in lustre for new params_tree. For lprocfs, there should be only API name changes. But libcfs and lnet are below this layer(obdclass), so they will access the params_tree directly by the API described in following. 5.2.2 Parameters tree 1. Updating API These APIs are used to add/delete entries by other modules. The implementation should be simple, and it only need add/delete the entry links from the tree, but the process needs to be protected by the lpe_rw_sem in the parent. ØÖÙØ Ù ØÖ Ô Ö Ñ ÒØÖÝ Ô Ö Ñ ÒØÖÝ ØÖÙØ Ù ØÖ Ô Ö Ñ ÒØÖÝ Ô Ö Ò Ñ 10

5.2 Parameters tree in kernel base 5 LOGIC SPECIFICATION Ù ØÖ Ô Ö Ñ Ö Ø Ö Ù ØÖ Ô Ö Ñ ÛÖ Ø Ø ÛÖ Ø ÚÓ Ø µ» Ö Ø Ø ÒØÖÝ» Ó Ó ÔØÖ Ô µ» Ô Û Ø ÛÖ Ø»Ö Ò Ø»» Ø ØÖÙØÙÖ Ó Ô»» À Ö Ô ÖÛ Ó Û Ù ØÓ ÔÖÓØ Ø Ø Ô Ö ÒØ» ÓÛÒ ÛÖ Ø Ô ¹ Ô ÖÛ Ñµ» Ò Ø Ô ØÓ Ø Ô Ö Ò Ø ÓÖ Ò ØÓ Ø ÙÖ Ó Ô Ö Ñ ØÖ ØÖÙØÙÖ Ò º º½» ÙÔ ÛÖ Ø Ô ¹ Ô ÖÛ Ñµ Ö ØÙÖÒ ¼ ÒØ Ô Ö Ñ Ö ÑÓÚ ÒØÖÝ ØÖÙØ Ù ØÖ Ô Ö Ñ ÒØÖÝ Ô Ö Ò Ñ µ» Ò ÒØÖÝ ÖÓÑ Ô ÓÖ Ò ØÓ Ø Ò Ñ» ÓÛÒ ÛÖ Ø Ô µ Ô Ô Ö Ñ ÓÓ ÙÔ ÒØÖÝ Ô Ò Ñ µ» ÙÒ Ò Ø ÒØÖÝ ÖÓÑ Ø ØÖ» Ô Ö Ñ Ö ÑÓÚ Ô µ ÙÔ ÛÖ Ø Ô µ Ö ØÙÖÒ 2. Accessing API These APIs are called to read/write/list the entries of the parameters tree. The general process of these API Locate the entry according to the path. Call read/write callback to get/set the value of the entry. For list, it will pack the sub-entry name of this entry In these processes, lookuping the entry is similar as link_path_walk in linux kernel. Note: in the traversing process, when lookuping the children, the parent needs to be locked, and also the ref_count of the gotten child will be held, then the parent and child will be protected from being deleted in the process. The race will be discussed in section 6. ØÖÙØ Ù ØÖ Ô Ö Ñ ÒØÖÝ Ô Ö Ñ ÓÓ ÙÔ ÒØÖÝ Ö Ô Ø µ» ÓØ Ø Ò Ñ ÖÓÑ ÒØÖÝ» ØÖÙØ Ù ØÖ Ô Ö Ñ ÒØÖÝ Ô Ö ÒØ ØÖÙØ Ù ØÖ Ô Ö Ñ ÒØÖÝ ÆÍÄÄ 11

5.2 Parameters tree in kernel base 5 LOGIC SPECIFICATION Ö ÓÓ ÙÔ Ò Ñ ÒØ ÓÓ ÙÔ Ò Ñ Ò Ø ¼ Ø ÓÑÔÓÒ ÒØ ¼ Ô Ö ÒØ ²Ù ØÖ Ô Ö Ñ ÖÓÓØ ÒØÖÝ» Ò Ø Þ Ø ÖÓÓØ ÒØÖÝ» Ò Ñ Ô Ø» ÌÖ Ú Ö Ø Ô Ø Ò Ó Ø Ø ÒØÖÝ Ñ Ö Ò Ô Ø Û» ÓÖ µ» Ø ÓÓ ÙÔ Ò Ñ ÓÓ ÙÔ Ò Ñ Ò Ø» ÓÓ ÙÔ Ò Ñ Ò Ñ Ó Ò Ñ Û ²² ³º³µµ» Ô Ø ÓÖÑ Ø ÓÓ ÜÜܺÝÝݺÞÞÞ ÓÓ ÙÔ Ò Ñ Ò Ø Ò Ñ ¹ ÓÓ ÙÔ Ò Ñ µ Ø ÓÑÔÓÒ ÒØ ½» ÓÓ ÙÔ Ø Ò Ñ ÙÒ Ö Ô Ö ÒØ» ÓÛÒ Ö Ô Ö Òع ÖÛ Ñµ» ÆÓØ Ø ÓÙÒ ÓÙ Ô Ö Ø µ ØÓ Ó Ø Ö ÓÙÒØ Ó Ø Ö Ò» ÓÓ ÙÔ ÒØÖÝ Ô Ö ÒØ ÓÓ ÙÔ Ò Ñ ÓÓ ÙÔ Ò Ñ Ò Ø µ ÙÔ Ö Ô Ö Òع ÖÛ Ñµ ÆÍÄĵ Ö Ø ÓÑÔÓÒ Òص Ö Ô Ö ÔÙØ Ô Ö Òص Ô Ö ÒØ Ö ØÙÖÒ For list, it need return all the children names. Because of limited output buffer size for ioctl, it also needs the offset and eof to indicate whether where to restart the listing and wheter listing is finished. So a dummy entry will be added to the params_tree to indicate the restart position of the list. The dummy entry will be skipped when others walking the tree. ÒØ Ô Ö Ñ Ø ÒØÖÝ Ö Ô Ø Ù Ó Ø ÒØ Ó ÚÓ Ù ÒØ Ù Òµ» ÄÓ Ø Ø ÒØÖÝ Ý Ø Ô Ø» Ô Ö ÒØ Ô Ö Ñ ÓÓ ÙÔ ÒØÖÝ Ô Ø µ» ÄÓ Ø Ø ÙÑÑÝ ÒØÖÝ Ö Ø ÖØ ÔÓ Ø ÓÒµ Ò Ö Ø ÖØ Ø ÖÓÑ Ø Ø ÙÑÑÝ ÆÓØ Ø Ó Ø Ö Ø Ù ØÖ Ò Ó Ø ÙÑÑÝ ÒØÖݺ» 12

6 STATE MANAGEMENT» Ô Ø Ò Ñ ØÓ Ø Ù Ö ÙÒØ Ù Ö Ù ÓÖ Ø Ò Ó Ø Ù ¹ ÒØÖÝ»» Û Ø Ö Ø Ö Ø Ò Ó Ù Ö Ø Ò Ø Ó ØÓ Ø Ø Ö Û Ø Ö Ò ÒÓØ Ö Ø» 5.2.3 lprocfs interface As discussed in 5.2.1, in lprocfs, the linux procfs API and dir_proc_entry need to be replaced with params tree API and lustre_params_entry. create_proc_entry : replaced with params_add_entry. remove_proc_entry: replaced with params_remove_entry. proc_dir_entry: replaced with lustre_params_entry In lprocfs, seq_file is used to output the stats of the obd, where it will use seq_print to output the stats directly in kernel base. But with params_tree, the stats(lprocfs_counter array) will be returned to lctl, and output there. 5.2.4 seq file Currently, some lustre proc entries use seq_file to output its large values to the user space, which can not be done in one time. In the new implementation, these seq_file entries will be changed to params_value_entry format, and output in chunk size to lctl one time. Since then we also need remember the offset to locate the restart position. Because seq_file should not be changed when it is being accessed, so the index could be used here to record the offset. 6 State management Since the parameters tree might be accessed by several threads at the same time, lpe_rw_sem is brought into protect the tree. lpe_rw_sem when lookup, get read_lock of the parent. when add/delete entry, get write_lock of the parent. 13

6 STATE MANAGEMENT Currently, lprocfs(lctl get/set_parameters) access lustre value by dp->data (proc_dir_entry), where data is usually obd_device. Then lprocfs use global lock( lprocfs_lock) and dp_deleted flag, which indicate whether the entry is being deleted. With params tree, the global lprocfs_lock will be replaced by the lpe_rw_sem locally in each entry. Here is the situation when raced is happening, lctl get_params osc.lustre-ost0000-aaa.stats(pa) vs cleanup osc.lustre-ost0000-aaa(pb) pa: lprocfs got the entry osc by lookup in path traverse process. pa: It gets read_lock of osc, then lookup lustre-ost0000-aaa, hold its refcount. pb: Cleanup process locate the osc entry and waiting pa release the read_lock of osc. pa: Accessing the entry, release read_lock of osc. pb:get write_lock, unlink the entry and destroy it. Note: In this process lctl get_params >lprocfs->params_tree->accessing obd_device, the lock could only protect those values which are valid until obd_cleanup. If some varibles which are even changed(destoryed) before obd_cleanup, for example obd_import, special synchronisms are still needed here. But it is out of scope of this document. 14