説明

情報処理装置

【課題】コールバック関数の呼び出しが不可能であっても、やり直すことなしに処理を行う。
【解決手段】動的ローディング制御モジュールは、コールバック関数の呼び出しに際し、コールバック関数を含み、そのコールバック関数を指定してシステムソフトモジュールを呼び出した動的ローディングモジュールが主記憶部にロードされているか否かを判断する(ステップS402)。ロードされていない場合、その動的ローディングモジュールの動作はコールバック関数の動作に依存するか否かを調べる(ステップS405)。依存しない場合、コールバック関数の呼び出し動作を終了し(ステップS404)、依存する場合、エラー処理(ステップS406)の後、動作を終了する(ステップS404)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置に係り、特に、コールバック関数の処理に関する。
【背景技術】
【0002】
情報処理装置で、コールバック関数を用いた処理が知られている。即ち、呼び出し元のプログラム1が呼び出し先のプログラム2を呼び出す際、コールバック関数と呼ばれるプログラム3を識別する情報を引数として与え、呼び出されたプログラム2は、その引数を参照してコールバック関数と呼ばれるプログラム3を呼び出す処理である。ここで、プログラム3を識別する情報は、例えば、プログラム3が位置する主記憶部のアドレスである。
【0003】
コールバック関数を用いた処理は、例えば、呼び出されたプログラム2で何らかのイベントが発生した際の処理を、呼び出し元のプログラム1が指定するために用いられる。ここで、プログラム3をコールバック関数と呼ぶが、必ずしも関数であることを意味しない。即ち、プログラム3は、呼び出しが可能なプログラムの単位であれば良く、プログラミング言語に依存して、関数の他、サブルーチン、サブプログラム、手続き、メソッドなどと呼ばれることもある。
【0004】
また、プログラムがアセンブリ言語によって記述される場合、プログラム3を識別する情報として、アセンブリ言語によるプログラム中の位置(アドレス)を用いることによれば、コールバック関数と呼ばれるプログラム3は、プログラムの単位である必要はない。プログラム中の任意の位置(アドレス)から開始される処理であるとして良い。
【0005】
呼び出し元のプログラム1と呼び出し先のプログラム2とは独立したプログラムであって、それらのプログラムは独立して動作する異なるタスクに割り当てられる処理が考えられる。この処理で、コールバック関数であるプログラム3は、呼び出し元のプログラム1と同じプログラムモジュール、即ち、所定の範囲の機能を果たすプログラム群に含まれ、かつ、呼び出し先のプログラム2が割り当てられたタスクとして動作することが考えられる。ここで、プログラムモジュールに含まれるプログラムの数は、複数と限るものではない。
【0006】
この処理によれば、呼び出し元のプログラム1と、呼び出し先のプログラム2との独立性を高め、保守性を高めることができる。更に、コールバック関数であるプログラム3の動作の結果に依存して、呼び出し元のプログラム1の動作を変化させることが容易に可能となる。
【0007】
しかしながら、呼び出し元のプログラム1と、呼び出し先のプログラム2とが独立したプログラムであって、それぞれのプログラムが異なるタスクに割り当てられて動作している場合、これらのプログラムのアンロードは、これらの2つのタスクによる処理に悪い影響を及ぼす。そこで、プログラムの一方の主記憶部からのアンロードの際、上記複数のタスクによって行なわれている処理を取り消す処理が知られている(例えば、特許文献1参照。)。
【0008】
ここで、上記プログラム又はそのプログラムが含まれるプログラムモジュールのアンロードは、そのプログラムのバージョンアップの際に行われるのみならず、そのプログラムが割り当てられたタスクがサスペンド状態に置かれること、そのタスクが消滅されたこと、そのタスクに割り当てられた主記憶部が解放されることによってそのプログラムがアンロードされることなどによって発生する。なお、サスペンド状態とは、そのタスクがOSのカーネルによって動作しないと設定された状態を意味し、そのタスクがCPUリソースを要求して、そのリソースの割り当てを待つ状態ではない。
【特許文献1】特開2004−192648号公報(第32頁)
【発明の開示】
【発明が解決しようとする課題】
【0009】
しかしながら、上述した特許文献1に開示されている方法では、プログラムのアンロード後、そのプログラムのロードを待って、アンロードの際に行なわれていた処理を再度行う、即ち、処理のやり直しが必要である問題点があった。
【0010】
本発明は上記問題点を解決するためになされたもので、コールバック関数の呼び出しが不可能であっても、やり直すことなしに処理を行う情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0011】
上記目的を達成するために、本発明の情報処理装置は、主記憶手段に記憶されたプログラムを実行する情報処理装置であって、第1のプログラムモジュールと、第2のプログラムモジュールとを備え、前記第1のプログラムモジュールは、コールバック関数を識別する情報をパラメータとして与えて前記第2のプログラムモジュールを呼び出し、前記第2のプログラムモジュールは、前記パラメータとして与えられた識別する情報で識別されるコールバック関数が前記主記憶手段に記憶されている場合、そのコールバック関数を呼び出し、そのコールバック関数が前記主記憶手段に記憶されていない場合、そのコールバック関数を呼び出す動作を無視することを特徴とする。
【発明の効果】
【0012】
本発明によれば、コールバック関数の呼び出しが不可能であっても、やり直すことなしに処理を行うことができる。
【発明を実施するための最良の形態】
【0013】
以下に、本発明による情報処理装置の実施の形態を、図面を参照して説明する。図1は、本発明の実施形態に係る情報処理装置が適用された移動通信装置の構成を示すブロック図である。
【0014】
この移動通信装置は、移動通信網(図示せず)を介した通信等を行う装置であり、装置全体の制御を行う制御部100と、基地局(図示せず)との間で電波の送受信を行うアンテナ111aと、通信部111bと、送受信部112と、スピーカ113aと、マイクロフォン113bと、通話部113cと、表示部114と、入力装置115と、カメラ116と、スピーカ117と、ファイル記憶部121とを備える。
【0015】
制御部100には、システムソフトモジュール101と、動的ローディング制御モジュール102と、動的ローディング管理テーブル103と、動的ローディングモジュール104とが含まれる。これらのプログラムによるモジュールがタスクに割り当てられて、主記憶部(図示せず)にロード、即ち、記憶され、そのタスクがCPU(図示せず)によって実行されることにより、又は、ノンタスクとして主記憶部にロードされ、CPUによって動作されることにより、それぞれのプログラムの機能が実行される。
【0016】
これらの主記憶部へのロードと、CPUリソースの割り当ては、制御部100に含まれるディスパッチャ(図示せず)によって行なわれる。ファイル記憶部121には、ファイル121aが記憶される。
【0017】
上記のように構成された、本発明の実施形態に係る移動通信装置の各部の動作を、図1を参照して説明する。
【0018】
システムソフトモジュール101は、複数の種類のモジュールからなり、それぞれのモジュールは、タスクに割り当てられ、そのタスクが実行されて機能を実現するものである。システムソフトモジュール101が割り当てられたタスクは、装置の各部、又は、動的ローディングモジュール104が実現する各機能によって要求されることを契機に実行される。また、各システムソフトモジュール101は、常に主記憶部にロードされており、それぞれが割り当てられたタスクは、装置の電源投入の際に生成され、消滅することはない。
【0019】
上記タスクは、装置の各部又は各機能に要求されない場合、サスペンド状態に置かれ、実行状態に置かれることはない。装置の各部又は各機能に要求された場合、実行状態に置かれ、実行される。ここで、CPUの数に限りがある場合、実行状態に置かれるとは、CPUリソース待ち状態に置かれることを含む。
【0020】
なお、システムソフトモジュール101は、常に主記憶部にロードされており、また、そのモジュールを割り当てられたタスクが装置の電源投入の際に生成され、消滅することはないのは、装置の各部又は各機能に実行を要求された後、動作を開始するまでの時間を短縮するためである。しかし、そのタスクは、装置の各部又は各機能に実行を要求されるまでは消滅されており、その要求によって生成されるとし、タスクが生成された後、システムソフトモジュール101は、主記憶部にロードされるとしても良い。また、ローディングされたシステムソフトモジュール101は、適宜二次記憶部(図示せず)にスワップアウトされても良い。主記憶部リソースを活用するためである。
【0021】
この実施形態では、制御部100は、2つのシステムソフトモジュール101を含む。第1は、2つの機能、即ち、符号化された静止画、例えば、JPEGファイルを復号し、復号された静止画を表示部114に表示させる機能と、静止画を符号化して、得られたJPEGファイルをパラメータとして返す機能とを実現するものであり、以後、システムソフトモジュール101(JPEG)と称する。
【0022】
システムソフトモジュール101(JPEG)は、呼び出しに際し、コールバック関数を識別する情報を必要とする。このコールバック関数は、復号された静止画を表示部114に表示させる機能にあっては、表示の完了を通知するものである。一方、符号化の機能にあっては、パラメータとしてJPEGファイルを返すためのものである。
【0023】
第2は、2つの機能、即ち、符号化された動画像と音声と、例えば、MPEGファイルを復号して、画像を表示部114に表示させ、音声をスピーカ117から発生させる機能と、動画像と音声とを符号化して、得られたMPEGファイルをファイル121aとしてファイル記憶部121に記憶させる機能とを実現するものであり、以後、システムソフトモジュール101(MPEG)と称する。
【0024】
システムソフトモジュール101(MPEG)は、呼び出しに際し、コールバック関数を識別する情報を必要とする。このコールバック関数は、復号された静止画を表示部114に表示させ、音声をスピーカ117から発生させる機能にあっては、表示の完了を通知し、また、表示が行なわれていることを所定の時間間隔で通知するものである。一方、符号化の機能にあっては、パラメータとしてMPEGファイルを返すためのものである。
【0025】
動的ローディング制御モジュール102は、制御部100に含まれるディスパッチャの一部として、ノンタスクとして動作して機能を実現するものである。即ち、動的ローディング制御モジュール102は、システムソフトモジュール101によって呼び出され、その呼び出しに伴うパラメータに従って、動的ローディングモジュール104に含まれるコールバック関数を呼び出す。
【0026】
呼び出されたコールバック関数は、上記システムソフトモジュール101が割り当てられたタスクとして実行される。なお、動的ローディング制御モジュール102は、ノンタスクとして動作するが、これに限るものではない。タスクに割り当てられ、そのタスクが実行されることによって動作しても良い。
【0027】
動的ローディング制御モジュール102が割り当てられたタスクは、装置の電源投入の際に生成され、消滅することはないとしても良く、また、システムソフトモジュール101によって呼び出された際に生成されても良い。更に、動的ローディング制御モジュール102は、主記憶部に常にロードされていても、いなくても良い。ただし、タスクとして動作する場合、動的ローディング制御モジュール102が割り当てられたタスクは、動的ローディングモジュール104が割り当てられたタスクよりも高い優先度を持ち、優先してCPUリソースが割り当てられることが適切である。
【0028】
動的ローディング管理テーブル103は、動的ローディングモジュール104が主記憶部にローディングされているか否かを記憶する。図2は、動的ローディング管理テーブル103の構成の一例を示す。この動的ローディング管理テーブル103は、モジュールID103aと、動的ロード状態103bとが関連付けられた情報からなる。
【0029】
モジュールID103aは、動的ローディングモジュール104を識別する情報である。また、動的ロード状態103bは、関連付けられたモジュールID103aによって識別される動的ローディングモジュール104が主記憶部にロードされているか否かを示し、「ロード」又は「アンロード」なる情報である。
【0030】
図2に示すように、この実施形態では、3つの動的ローディングモジュール104があり、それぞれを識別する情報は、「モジュール001(電子メール)」、「モジュール002(メディアプレイヤ)」、「モジュール003(写真撮影)」である。また、それぞれが割り当てられたタスクが実行する機能は、電子メールの送受信、コンテンツの再生、写真の撮影である。
【0031】
この3つの動的ローディングモジュール104のそれぞれを、以後、動的ローディングモジュール104(電子メール)、動的ローディングモジュール104(コンテンツ)、動的ローディングモジュール104(写真)と称する。
【0032】
なお、動的ローディング管理テーブル103は、表形式で記憶されるように説明し、そして、図示したが、これは理解を容易にするためであって、これに限るものではない。例えば、離散して記憶され、離散した部分の間をポインターで結ぶ構成としても良い。
【0033】
動的ローディングモジュール104のそれぞれは、入力装置115の所定の操作に基づいて、タスクに割り当てられることによって実行され、所定の機能を実現する。上記タスクは、入力装置115の所定の操作に基づいて、生成される。また、入力装置115の所定の操作に基づいて、又は、動的ローディングモジュール104の実現する所定の機能の終了によって、消滅される。また、動的ローディングモジュール104は、上記タスクが生成された際に主記憶部にロードされ、消滅された際に主記憶部からアンロードされる。
【0034】
また、動的ローディングモジュール104のそれぞれは、コールバック関数を含み、システムソフトモジュール101を呼び出す際は、そのコールバック関数を識別する情報、即ち、そのコールバック関数が位置する主記憶部のアドレスを与える。なお、コールバック関数は、それぞれの動的ローディングモジュール104に含まれると限るものではない。しかし、含まれない場合、動的ローディングモジュール104のそれぞれのロードとアンロードに従って、動的ローディングモジュール104のそれぞれに対応するコールバック関数もロードとアンロードがされる。
【0035】
動的ローディングモジュール104が割り当てられたタスクは、常には生成されておらず、かつ、動的ローディングモジュール104は、常には主記憶部にはロードされていないとしたが、これは、装置のリソースの有効活用を目的としたものであり、これに限るものではない。
【0036】
上記タスクは、常に生成されており、入力装置115の所定の操作に基づいて、サスペンド状態と実行状態との間を推移する、及び/又は、動的ローディングモジュール104は、常に主記憶部にロードされているとしても良い。動的ローディングモジュール104が常に主記憶部にロードされているとき、本発明は、その動的ローディングモジュール104に対応するコールバック関数がロードされているか否かが変化する場合に適用される。
【0037】
既に説明したように、この実施形態で、動的ローディングモジュール104は、動的ローディングモジュール104(電子メール)、動的ローディングモジュール104(コンテンツ)、動的ローディングモジュール104(写真)の3つであり、タスクに割り当てられることによって、それらが実行する機能は、それぞれ電子メール送受信機能、コンテンツ再生機能、写真撮影機能である。
【0038】
以上説明したように、システムソフトモジュール101と、動的ローディング制御モジュール102と、動的ローディングモジュール104とは、それぞれノンタスクであるディスパッチャの一部として動作し、又は、タスクに割り当てられて実行されることによって機能を実現する。そこで、以後、システムソフトモジュール101と、動的ローディング制御モジュール102と、動的ローディングモジュール104とが動作して機能を実現する旨の記述によって、即ち、ディスパッチャ又はタスクの記載を省くことによって簡明な説明をする。
【0039】
ここで、システムソフトモジュール101と、動的ローディング制御モジュール102と、動的ローディング管理テーブル103と、動的ローディングモジュール104とのコールバック関数の呼び出しの際のソフトウェア構成を説明する。図3は、この呼び出しの際のソフトウェア構成の一例を示す。即ち、これらのソフトウェアは、以下の順で動作要求、呼び出しを行う。
【0040】
(1)コールバック関数を含む動的ローディングモジュール104は、システムソフトモジュール101に動作を要求する。この際、上記コールバック関数を識別する情報を与える。(2)システムソフトモジュール101は、動的ローディングモジュール104に含まれるコールバック関数を呼び出す際、動的ローディング制御モジュール102を呼び出す。(3)動的ローディング制御モジュール102は、動的ローディングモジュール104を参照する。(4)参照によって得られた情報に基づいて、動的ローディングモジュール104に含まれるコールバック関数を呼び出す。
【0041】
通信部111bは、アンテナ111aが受信した高周波信号を送受信部112へ出力し、また、送受信部112から出力される高周波信号をアンテナ111aより送信する。
【0042】
送受信部112は、通信部111bからの高周波信号を増幅、周波数変換及び復調し、それによって得られたディジタル音声信号を通話部113cへ、得られた制御信号を制御部100へ、得られた電子メールを制御部100の電子メール送受信機能へ送る。更には、送受信部112は、通話部113cから出力されるディジタル音声信号と、制御部100から出力される制御信号と、電子メール送受信機能から出力される電子メールとを変調、周波数変換及び増幅し、高周波信号を得て、それを通信部111bに送る。
【0043】
通話部113cは、送受信部112から出力されるディジタル音声信号をアナログ音声信号に変換し、それを増幅してスピーカ113aに送る。また、マイクロフォン113bから出力されるアナログ音声信号を増幅し、それをディジタル音声信号に変換して送受信部112に送信する。
【0044】
表示部114は、制御部100に制御されることで、カーソルを含む文字・数字を含む画像データの表示動作を行い、表示されているデータは、入力装置115からの入力操作や着信信号の受信に応答して制御部100からの指示を受けることで切換わる。また、所定の時間に渡って入力装置115からの入力操作や着信信号の受信がない場合、表示部114は、制御部100に制御されて表示を終了する。
【0045】
入力装置115は、通信相手の電話番号などを指定し、また、トグル式の入力方式によってひらがな文字、アルファベット文字及び記号文字を入力するための数字キーと、カーソル移動の指示を入力するカーソル移動キーやスクロールキーを含む機能の指示を入力する複数の機能キーとを含むキーからなる。カーソル移動キーは、4つのキーからなり、それぞれ上下左右方向へカーソル位置を移動させるために用いられる。
【0046】
そして、入力装置115のキーが操作、例えば押下されると、そのキーの識別子が制御部100に通知され、制御部100の制御に基づいて、その識別子が通知された装置内の各部の処理により、表示部114に文字として表示されたり、キーの操作及び解放に基づく制御が行われたりする。
【0047】
動的ローディングモジュール104(電子メール)による電子メール送受信機能は、入力装置115の所定のキー操作に基づいて動作を開始し、電子メールを送信する。即ち、入力装置115の所定のキー操作に従って、送信される電子メールの宛先電子メールアドレスと、件名と、本文とを入力して、件名と、本文とを、入力された宛先電子メールアドレスに宛てて、送受信部112に要求してメールサーバ装置(図示せず)へ送信させる。また、電子メール送受信機能は、入力装置115の所定のキー操作に従って、ファイル記憶部121に記憶されたファイル121aを添付ファイルとして併せて送信させる。
【0048】
更に、電子メール送受信機能は、電子メール着信信号を受信したことを契機として動作を開始し、メールサーバ装置から送信された電子メールの送信元電子メールアドレス及び件名を含むその電子メールのヘッダと、その本文とを送受信部112を経由して受信して、ファイル121aとしてファイル記憶部121に記憶させる。更に、その電子メールに添付ファイルが添付されていれば、その添付ファイルをファイル121aとしてファイル記憶部121に記憶させる。
【0049】
また、電子メール送受信機能は、入力装置115の所定のキー操作に基づいて動作を開始し、ファイル121aとして記憶された受信された電子メールの送信元電子メールアドレス、件名、及び本文を表示部114に表示させる。更に、その電子メールに添付ファイルが添付されている場合、その添付ファイルを出力させる。
【0050】
即ち、ファイル121aとして記憶されたその添付ファイルがJPEGファイルであれば、そのファイルをシステムソフトモジュール101(JPEG)に要求して復号させ、更に、得られた復号された画像を表示部114に表示させる。また、その添付ファイルがMPEGファイルであれば、そのファイルをシステムソフトモジュール101(MPEG)に要求して復号させ、更に、表示部114に表示させ、スピーカ117から音声発生させる。
【0051】
動的ローディングモジュール104(コンテンツ)によるコンテンツ再生機能は、入力装置115の所定のキー操作によって指定されたファイル記憶部121に記憶されたファイル121aであるコンテンツを復号再生する。即ち、指定されたファイル121aがJPEGファイルであれば、そのファイルをシステムソフトモジュール101(JPEG)に要求して復号させ、得られた復号された画像を表示部114に表示させる。また、そのファイル121aがMPEGファイルであれば、そのファイルをシステムソフトモジュール101(MPEG)に要求して復号の上、表示部114に表示させ、スピーカ117から音声発生させる。
【0052】
動的ローディングモジュール104(写真)による写真撮影機能は、入力装置115の所定のキー操作に基づいて、カメラ116によって入力された静止画をシステムソフトモジュール101(JPEG)に要求して符号化させ、得られたJPEGファイルをファイル121aとしてファイル記憶部121に記憶させる。
【0053】
又は、動的ローディングモジュール104(写真)は、カメラ116によって入力された動画像と、マイクロフォン113bによって入力された音声とをシステムソフトモジュール101(MPEG)に要求して符号化させ、得られたMPEGファイルをファイル121aとしてファイル記憶部121に記憶させる。
【0054】
以下、本実施形態に係る移動通信装置における、コールバック関数が呼び出される動作を説明する。ここで、システムソフトモジュール101がコールバック関数を呼び出すに際し、そのコールバック関数を含む動的ローディングモジュール104の動作が終了し、そのプログラムが主記憶部からアンロードされている場合の動作を中心に説明する。
【0055】
(コールバックに係る情報)
図4は、コールバック関数を含む動的ローディングモジュール104が動作中に、動的ローディングモジュール104からシステムソフトモジュール101へ、システムソフトモジュール101から動的ローディング制御モジュール102へ、動的ローディング制御モジュール102から動的ローディングモジュール104に含まれるコールバック関数へ、それぞれ伝えられるコールバックに係る情報を示す。
【0056】
即ち、動的ローディングモジュール104からシステムソフトモジュール101へ伝えられるコールバックに係る情報は、その動的ローディングモジュール104のモジュールID103aと、その動的ローディングモジュール104の状態遷移依存情報と、その動的ローディングモジュール104に含まれるコールバック関数のアドレスを示すポインターとである。なお、コールバックに係る情報以外に、動的ローディングモジュール104からシステムソフトモジュール101へは、システムソフトモジュール101に依存するパラメータが当然に伝えられる。
【0057】
ここで、動的ローディングモジュール104の状態遷移依存情報は、その動的ローディングモジュール104にとって、コールバック関数が呼び出されるか否かは重要度が高いか否かを示す。重要度が高いか否かとは、コールバック関数が呼び出された後に行なわれるその動的ローディングモジュール104の動作は必須であるか否かであり、その動作が必須である場合、重要度が高く、状態遷移依存情報は依存するとなる。言い換えると、重要度が高いか否かとは、動的ローディングモジュール104の動作は、コールバック関数が呼び出されることに大きく依存するか否かである。また、大きく依存するか否かとは、大きな動作の相違があるか否かである。
【0058】
ここで、上記動作が必須である一例は、動的ローディングモジュール104が終了する前にコールバック関数が呼び出されないことによって、装置の使用者に違和感を与える場合である。装置の使用者に違和感を与えない例として、単なる動作完了を通知するコールバック関数が呼び出された場合がある。また、装置の使用者に違和感を与える例として、コールバック関数の呼び出し後、動的ローディングモジュール104がコールバック関数を介して伝えられた画像を表示部114へ表示させ、また、音声をスピーカ117から発生させる場合がある。
【0059】
また、上記動作が必須である別の例は、動的ローディングモジュール104が終了する前にコールバック関数が呼び出されないことによって、装置のリソースの活用に悪影響を与える場合である。装置のリソースの活用に悪影響を与える例として、コールバック関数の呼び出し後、動的ローディングモジュール104が、装置のリソースの解放を行なう場合がある。
【0060】
システムソフトモジュール101から動的ローディング制御モジュール102へ伝えられるコールバックに係る情報は、上記の動的ローディングモジュール104からシステムソフトモジュール101へ伝えられるコールバックに係る情報に加えて、システムソフトモジュール101によって与えられるコールバック関数へのパラメータである。
【0061】
動的ローディング制御モジュール102から動的ローディングモジュール104に含まれるコールバック関数へ伝えられるコールバックに係る情報は、上記システムソフトモジュール101によって与えられるコールバック関数へのパラメータである。
【0062】
(動的ローディングモジュール104のロード)
図5は、動的ローディング制御モジュール102が動的ローディングモジュール104をロードする動作のフローチャートを示す。動的ローディング制御モジュール102は、入力装置115の所定の操作によって動的ローディングモジュール104をロードする動作を開始し(ステップS201)、動的ローディングモジュール104のいずれか、即ち、動的ローディングモジュール104(電子メール)、動的ローディングモジュール104(コンテンツ)、動的ローディングモジュール104(写真)の3つの中の1つを上記操作に従って選択して、その選択された動的ローディングモジュール104が割り当てられたタスクを生成して、リソース割り当てを待つ状態に置く(ステップS202)。
【0063】
動的ローディング制御モジュール102は、その動的ローディングモジュール104を主記憶部にロードし(ステップS203)、ステップS202でロードした動的ローディングモジュール104に対応する、動的ローディング管理テーブル103の動的ロード状態103bを「ロード」として更新記憶させて(ステップS204)、動的ローディングモジュール104をロードする動作を終了する(ステップS205)。
【0064】
ここで、ステップS204で動的ロード状態103bを「ロード」として更新記憶させる動的ローディング管理テーブル103について説明をする。ステップS202で動的ローディングモジュール104(電子メール)をロードした場合、動的ローディング管理テーブル103中の「モジュール001(電子メール)」であるモジュールID103aと関連付けられた動的ロード状態103bを「ロード」として、更新記憶させる。
【0065】
一方、動的ローディングモジュール104(コンテンツ)、をロードした場合、動的ローディング管理テーブル103中の「モジュール002(メディアプレイヤ)」であるモジュールID103aと関連付けられた動的ロード状態103bを「ロード」として、更新記憶させる。
【0066】
更に、動的ローディングモジュール104(写真)をロードした場合、動的ローディング管理テーブル103中の「モジュール003(写真撮影)」であるモジュールID103aと関連付けられた動的ロード状態103bを「ロード」として、更新記憶させる。
【0067】
(動的ローディングモジュール104のアンロード)
図6は、動的ローディング制御モジュール102が動的ローディングモジュール104をアンロードする動作のフローチャートを示す。動的ローディング制御モジュール102は、ロードされた動的ローディングモジュール104が割り当てられたタスクが入力装置115の所定の操作によって動作を終了する際、その動的ローディングモジュール104が割り当てられたタスクの要求によって、動的ローディングモジュール104をアンロードする動作を開始する(ステップS301)。
【0068】
そして、動的ローディング制御モジュール102は、上記要求をしたタスクを消滅させ(ステップS302)、そのタスクに割り当てられた動的ローディングモジュール104を主記憶部からアンロードし、即ち、そのタスクに割り当てられていた主記憶部リソースを含む全てのリソースを解放する(ステップS303)。
【0069】
そして、動的ローディング制御モジュール102は、ステップS303でアンロードした動的ローディングモジュール104に対応する、動的ローディング管理テーブル103の動的ロード状態103bを「アンロード」として更新記憶させて(ステップS304)、動的ローディングモジュール104をアンロードする動作を終了する(ステップS305)。
【0070】
ここで、ステップS304で動的ロード状態103bを「アンロード」として動的ローディング管理テーブル103を更新記憶させる動作は、図5を参照して説明した動的ローディング制御モジュール102が動的ローディングモジュール104をロードする際の動作に準ずる。
【0071】
即ち、ロードする動作では、ロードした動的ローディングモジュール104に関連付けられた動的ロード状態103bを「ロード」として、更新記憶させるのに対し、アンロードする動作では、アンロードした動的ローディングモジュール104に関連付けられた動的ロード状態103bを「アンロード」として、更新記憶させる。
【0072】
(動的ローディングモジュール104中のコールバック関数の呼び出し)
既に図4を参照して説明した通り、コールバック関数を含む動的ローディングモジュール104が、システムソフトモジュール101を呼び出し、呼び出されたシステムソフトモジュール101が上記コールバック関数を呼び出す目的で、動的ローディング制御モジュール102を呼び出す。この呼び出された動的ローディング制御モジュール102が上記コールバック関数を呼び出す動作を説明する。
【0073】
図7は、動的ローディング制御モジュール102がコールバック関数を呼び出す動作のフローチャートを示す。動的ローディング制御モジュール102は、システムソフトモジュール101に呼び出されてコールバック関数を呼び出す動作を開始する(ステップS401)。
【0074】
この呼び出される際、パラメータとして、システムソフトモジュール101が呼び出すコールバック関数を含む動的ローディングモジュール104のモジュールID103aと、そのコールバック関数に対するその動的ローディングモジュール104の状態遷移依存情報と、その動的ローディングモジュール104に含まれるコールバック関数のアドレスを示すポインターと、システムソフトモジュール101によってそのコールバック関数へ与えられるパラメータとが与えられる。
【0075】
動的ローディング制御モジュール102は、上記コールバック関数を含む動的ローディングモジュール104が主記憶部にロードされているか否かを判断する(ステップS402)。即ち、パラメータとして与えられたモジュールID103aと関連付けられて記憶された動的ロード状態103bを動的ローディング管理テーブル103から検索する。検索された動的ロード状態103bが「ロード」である場合ロードされていると判断し、検索された動的ロード状態103bが「アンロード」である場合、ロードされていないと判断する。
【0076】
ロードされていると判断された場合、動的ローディング制御モジュール102は、パラメータとして与えられたポインターを参照して上記コールバック関数を呼び出して(ステップS403)、コールバック関数を呼び出す動作を終了する(ステップS404)。
【0077】
ここで、コールバック関数が呼び出された結果、システムソフトモジュール101によって与えられたそのコールバック関数へのパラメータに従ってコールバック関数は動作し、その動作の結果に従って動的ローディングモジュール104は動作する。また、動的ローディング制御モジュール102がコールバック関数を呼び出す動作を終了することによって、システムソフトモジュール101は、コールバック関数を呼び出す動作に続く動作を行う。
【0078】
一方、ロードされていないと判断された場合、動的ローディング制御モジュール102は、パラメータとして与えられた状態遷移依存情報を調べる(ステップS405)。調べた結果、依存しない場合、コールバック関数を呼び出す動作を無視し、即ち、コールバック関数を呼び出さず、かつ、その呼び出しに代わる処理を行なわずに動作を終了する(ステップS404)。一方、依存する場合、エラー処理を行って(ステップS406)、コールバック関数を呼び出す動作を終了する(ステップS404)。
【0079】
ここで、ステップS406のエラー処理は、例えば、依存することを示す状態遷移依存情報が与えられたが、上記動的ローディングモジュール104及び/又は上記コールバック関数が主記憶部にロードされていない旨と、上記システムソフトモジュール101を識別する情報と、上記コールバック関数を識別する情報と、そのコールバック関数を含む動的ローディングモジュール104を識別する情報とを表示部114に表示させる。
【0080】
また、例えば、依存することを示す状態遷移依存情報が与えられたが、上記動的ローディングモジュール104及び/又は上記コールバック関数が主記憶部にロードされていない旨と、上記システムソフトモジュール101を識別する情報と、上記コールバック関数を識別する情報と、そのコールバック関数を含む動的ローディングモジュール104を識別する情報とをエラー履歴(エラーログ)に追加記憶させる。
【0081】
ここで、エラー履歴は、ファイル121aとしてファイル記憶部121に記憶されるが、これに限るものではない。履歴記憶部(図示せず)に記憶されるとしても良く、また、例えば、送受信部112を介してエラー収集装置(図示せず)に送信されても良い。エラー収集装置は、エラー履歴を記憶する。
【0082】
このように記憶されたエラー履歴を参照することによって、装置のプログラムの開発工程の短縮に効果がある。また、このように、エラー処理を行うことによって、装置のユーザに違和感を与えることを防止する効果が得られる。即ち、装置で動作中のタスクが異常終了し、エラーを示すポップアップウィンドウが表示部114に表示されるなど、ユーザに違和感を与える状態へ遷移することを防止する効果が得られる。
【0083】
ここで、状態遷移依存情報について、具体例を挙げて説明する。システムソフトモジュール101(JPEG)がJPEGファイルを復号し、ヒープメモリに記憶された復号された静止画をコールバック関数を介してパラメータとして返すとした場合、動的ローディングモジュール104(電子メール)がJPEGファイルを表示部114に表示させ、その表示の後、上記ヒープメモリを別の目的に使用するには、コールバック関数を介して返された静止画を表示させた後、上記ヒープメモリを解放する動作が必要である。即ち、状態遷移依存情報は、「依存する」となる。
【0084】
一方、システムソフトモジュール101(JPEG)がJPEGファイルを復号し、ヒープメモリに記憶された復号された静止画を表示部114に表示させる、そして、コールバック関数を介して復号及び表示処理の完了を通知し、所定の時間に渡る表示の後、上記ヒープメモリを解放するとした場合、動的ローディングモジュール104(電子メール)がJPEGファイルを表示部114に表示させるには、システムソフトモジュール101(JPEG)を単に呼び出せば良い。
【0085】
即ち、動的ローディングモジュール104(電子メール)は、コールバック関数を介して返される完了通知を得ることなく動作を終了しても、装置のユーザへ違和感を与えない。また、装置のリソースの活用に悪影響を与えない。そこで、状態遷移依存情報は、「依存しない」となる。
【0086】
なお、動的ローディングモジュール104(電子メール)が入力装置115の所定の操作に基づいて動作を終了する、即ち、装置のユーザの意思に従って動作を終了する場合、その終了以前に入力装置115の所定の操作によって与えられたJPEGファイルの表示指示は取り消されたとみなすことが適切な場合、動的ローディングモジュール104(電子メール)は、システムソフトモジュール101(JPEG)に処理の取り消しを要求するが、これに限るものではない。
【0087】
例えば、システムソフトモジュール101(JPEG)は、コールバック関数を介して復号された静止画を動的ローディングモジュール104(電子メール)に伝えるとし、動的ローディングモジュール104(電子メール)は、「依存しない」である状態遷移依存情報をシステムソフトモジュール101(JPEG)へ伝えれば良い。ここで、システムソフトモジュール101(JPEG)は、復号された静止画が記憶された記憶領域の解放を含む管理をする。これによって、装置は、JPEGファイルの表示指示の取り消しなしに、この取り消しが行なわれた場合と同じ動作をする。
【0088】
以上の説明は、システムソフトモジュール101(JPEG)に限らず、システムソフトモジュール101(MPEG)にあっても同様である。また、動的ローディングモジュール104(電子メール)に限らず、動的ローディングモジュール104(コンテンツ)、動的ローディングモジュール104(写真)にあっても同様である。
【0089】
以上の説明は、動的ローディング管理テーブル103は、動的ローディングモジュール104が主記憶部にロードされているか否かを記憶する専用のテーブルであるとしたが、これに限るものではない。例えば、タスクに係る情報を記憶するタスクコントロールブロック(図示せず)に含まれるとしても良い。また、上記専用のテーブルである場合、動的ローディング制御モジュール102に含まれるとしても良い。
【0090】
以上の説明で、コールバック関数を識別する情報は、その関数がロードされた主記憶部の絶対アドレスであるとしたが、これに限るものではない。例えば、その関数が含まれる動的ローディングモジュール104の先頭からのアドレス、即ち、主記憶部の相対アドレスであるとしても良い。相対アドレスから絶対アドレスへの変換は、例えば、タスクコントロールブロックに記憶された、その動的ローディングモジュール104の先頭がロードされた主記憶部の絶対アドレスを参照することによって容易である。
【0091】
更には、コールバック関数を識別する情報は、その関数の名称であるとしても良い。名称を識別する情報とする場合、動的ローディングモジュール104は、自モジュールに含まれる関数と、その関数の相対アドレス、即ち、動的ローディングモジュール104の先頭からのアドレス、とを関連付けて自モジュール内に記憶する。
【0092】
そして、関数の名称から絶対アドレスへの変換は、その関連付けられた情報を参照することによって容易である。名称を識別する情報とする処理によれば、動的ローディングモジュール104に含まれる関数の中でロードされたプログラムが動的に変化する、即ち、ダイナミックリンク方式においても本発明を適用することができる。
【0093】
以上の説明は、本発明を移動通信装置に適用した形態を例にとって行ったが、これに限るものではない。本発明は、コールバック関数を用いる全ての情報処理装置、例えば、パソコンや、PDA(Personal Digital Assistant)に適用することが当然に可能である。本発明は以上の構成に限定されるものではなく、種々の変形が可能である。
【図面の簡単な説明】
【0094】
【図1】本発明の実施形態に係る移動通信装置の構成を示すブロック図。
【図2】本発明の実施形態に係る動的ローディング管理テーブルの構成の一例を示す図。
【図3】本発明の実施形態に係るシステムソフトモジュールと、動的ローディング制御モジュールと、動的ローディング管理テーブルと、動的ローディングモジュールとのソフトウェア構成の一例を示す図。
【図4】本発明の実施形態に係る動的ローディングモジュールに開始され、コールバック関数へ至る呼び出しの各段階で伝えられるコールバックに係る情報の一例を示す図。
【図5】本発明の実施形態に係る動的ローディング制御モジュールの動作のフローチャート(動的ローディングモジュールをロードする動作)。
【図6】本発明の実施形態に係る動的ローディング制御モジュールの動作のフローチャート(動的ローディングモジュールをアンロードする動作)。
【図7】本発明の実施形態に係る動的ローディング制御モジュールの動作のフローチャート(コールバック関数を呼び出す動作)。
【符号の説明】
【0095】
100 制御部
101 システムソフトモジュール
102 動的ローディング制御モジュール
103 動的ローディング管理テーブル
103a モジュールID
103b 動的ロード状態
104 動的ローディングモジュール
114 表示部
115 入力装置

【特許請求の範囲】
【請求項1】
主記憶手段に記憶されたプログラムを実行する情報処理装置であって、
第1のプログラムモジュールと、
第2のプログラムモジュールとを備え、
前記第1のプログラムモジュールは、コールバック関数を識別する情報をパラメータとして与えて前記第2のプログラムモジュールを呼び出し、
前記第2のプログラムモジュールは、前記パラメータとして与えられた識別する情報で識別されるコールバック関数が前記主記憶手段に記憶されている場合、そのコールバック関数を呼び出し、そのコールバック関数が前記主記憶手段に記憶されていない場合、そのコールバック関数を呼び出す動作を無視する
ことを特徴とする情報処理装置。
【請求項2】
前記第1のプログラムモジュールは、前記コールバック関数を識別する情報に加えて、そのコールバック関数の呼び出しの重要度の高又は低をパラメータとして与えて前記第2のプログラムモジュールを呼び出し、
前記第2のプログラムモジュールは、前記パラメータとして与えられた識別する情報で識別されるコールバック関数が前記主記憶手段に記憶されていない、かつ、前記第1のプログラムモジュールによって与えられたパラメータが前記コールバック関数の呼び出しの重要度が低である場合、そのコールバック関数を呼び出す動作を無視する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
表示手段を更に備え、
前記第1のプログラムモジュールは、前記コールバック関数の呼び出しの重要度が高である旨のパラメータを与えて前記第2のプログラムモジュールを呼び出し、
前記第2のプログラムモジュールは、符号化された画像ファイルを復号した後、前記パラメータとして与えられた識別する情報で識別されるコールバック関数が前記主記憶手段に記憶されている場合、そのコールバック関数を呼び出し、
前記第1のプログラムモジュールは、前記コールバック関数が呼び出されると、前記第2のプログラムモジュールによって復号された画像ファイルを前記表示手段に表示させる
ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
表示手段を更に備え、
前記第1のプログラムモジュールは、前記コールバック関数の呼び出しの重要度が低である旨のパラメータを与えて前記第2のプログラムモジュールを呼び出し、
前記第2のプログラムモジュールは、符号化された画像ファイルを復号し、その復号された画像を前記表示手段に表示させた後、前記パラメータとして与えられた識別する情報で識別されるコールバック関数が前記主記憶手段に記憶されている場合、そのコールバック関数を呼び出す
ことを特徴とする請求項2に記載の情報処理装置。
【請求項5】
前記コールバック関数は、前記第1のプログラムモジュールが前記主記憶手段にロードされる際にその主記憶手段にロードされ、前記第1のプログラムモジュールが前記主記憶手段からアンロードされる際にその主記憶手段からアンロードされる
ことを特徴とする請求項1に記載の情報処理装置。
【請求項6】
前記第1のプログラムモジュールは、前記コールバック関数を識別する情報と、前記コールバック関数の呼び出しの重要度の高又は低とをパラメータとして与えて前記第2のプログラムモジュールを呼び出し、
前記第2のプログラムモジュールは、前記パラメータとして与えられた識別する情報で識別されるコールバック関数の呼び出しに際し、前記第1のプログラムモジュールが前記主記憶手段に記憶されていない、かつ、前記第1のプログラムモジュールによって与えられたパラメータが前記コールバック関数の呼び出しの重要度が低である場合、そのコールバック関数を呼び出す動作を無視する
ことを特徴とする請求項5に記載の情報処理装置。
【請求項7】
表示手段を更に備え、
前記第1のプログラムモジュールは、前記コールバック関数を識別する情報に加えて、そのコールバック関数の呼び出しの重要度の高又は低をパラメータとして与えて前記第2のプログラムモジュールを呼び出し、
前記第2のプログラムモジュールは、前記パラメータとして与えられた識別する情報で識別されるコールバック関数が前記主記憶手段に記憶されていない、かつ、前記第1のプログラムモジュールによって与えられたパラメータが前記コールバック関数の呼び出しの重要度が高である場合、前記表示手段に所定の表示をさせる
ことを特徴とする請求項1に記載の情報処理装置。
【請求項8】
履歴を記憶する履歴記憶手段を更に備え、
前記第1のプログラムモジュールは、前記コールバック関数を識別する情報に加えて、そのコールバック関数の呼び出しの重要度の高又は低をパラメータとして与えて前記第2のプログラムモジュールを呼び出し、
前記第2のプログラムモジュールは、前記パラメータとして与えられた識別する情報で識別されるコールバック関数が前記主記憶手段に記憶されていない、かつ、前記第1のプログラムモジュールによって与えられたパラメータが前記コールバック関数の呼び出しの重要度が高である場合、前記コールバック関数が前記主記憶手段に記憶されていない旨の履歴を前記履歴記憶手段に記憶させる
ことを特徴とする請求項1に記載の情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate