Stuart,, All,
You're right. I had not noticed operator==.
Contrary to my last email, I do agree that sc_process_handle is better
than the process object pointer as a unique key. I quite like the proposal
of sc_process_handle::operator<
John A
From:
Stuart Swan <stuart@cadence.com>
To:
"john.aynsley@doulos.com" <john.aynsley@doulos.com>, Eric PAIRE
<eric.paire@st.com>, Jerome CORNET <jerome.cornet@st.com>
Cc:
"'Laurent MAILLET-CONTOZ'" <laurent.maillet-contoz@st.com>,
"owner-systemc-p1666-technical@eda.org"
<owner-systemc-p1666-technical@eda.org>, "systemc-p1666-technical@eda.org"
<systemc-p1666-technical@eda.org>
Date:
11/03/2010 21:57
Subject:
RE: Identifying quickly what is the current process
John, Jerome-
You still haven?t convinced me that what I propose won?t solve Jerome?s
issue.
John- agreed that you are permitted multiple process handles to the same
process,
but if you use == for two such handles it will return true, which is what
Jerome wants I believe.
Jerome proposes to just use the handle object in the vector, but concludes
that he can?t because
the ctor is private, but I believe it will all work fine..
-Stuart
From: john.aynsley@doulos.com [mailto:john.aynsley@doulos.com]
Sent: Thursday, March 11, 2010 9:36 AM
To: Stuart Swan; Eric PAIRE; Jerome CORNET
Cc: 'Laurent MAILLET-CONTOZ'; owner-systemc-p1666-technical@eda.org;
systemc-p1666-technical@eda.org
Subject: RE: Identifying quickly what is the current process
Stuart, Jerome,
Nah, the copy ctor is public but it duplicates the process handle. You are
permitted multiple process handles to the same process.
But my answer to Jerome is to simply use the value returned from
sc_process_handle::get_process_object() , which is the address of the
process object itself, as the unique id. (You can then use std::map to get
an integer id, if you like.)
John A
From:
Stuart Swan <stuart@cadence.com>
To:
Jerome CORNET <jerome.cornet@st.com>, "systemc-p1666-technical@eda.org"
<systemc-p1666-technical@eda.org>
Cc:
Eric PAIRE <eric.paire@st.com>, "'Laurent MAILLET-CONTOZ'"
<laurent.maillet-contoz@st.com>
Date:
10/03/2010 22:04
Subject:
RE: Identifying quickly what is the current process
Sent by:
owner-systemc-p1666-technical@eda.org
Jerome-
I may be mistaken, since it has been a few years since I dug into this
code,
but I think you may be able to use the sc_process_handle object itself as
the
unique identifier that you seek. I think the copy ctor is public, and the
object
itself is very lightweight so it does not consume much time or space to
copy it.
One issue with having the integer ID that you propose at bottom is whether
such
integer IDs would ever be recycled when the original process dies. With
the process_handle
approach above there is no such issue. Plus, you get easy access to the
process name, etc.
And, with the process control extensions that Cadence has proposed for
this update, you get
additional functionality like kill, etc.
Let me know if this doesn't work for you.
Thanks
-Stuart
>-----Original Message-----
>From: owner-systemc-p1666-technical@eda.org [
mailto:owner-systemc-p1666-technical@eda.org] On Behalf
>Of Jerome CORNET
>Sent: Wednesday, March 10, 2010 6:16 AM
>To: systemc-p1666-technical@eda.org
>Cc: Eric PAIRE; 'Laurent MAILLET-CONTOZ'
>Subject: Identifying quickly what is the current process
>
>All again,
>
>there are various situations where knowing what is the current process
>(if any) is important.
>For instance, one could want to compute statistics on a per SystemC
>process basis.
>The current norm standardized very useful APIs to get information about
>what is the current process, with sc_get_current_process_handle() and
>the sc_process_handle
>class.
>
>However, there is no convenient and efficient way to understand what is
>the current process
>compared to previous invocations of sc_get_current_process_handle(). As
>an example, let us
>imagine I want to gather statistics about all processes in the
>simulation. I would build an array
>whose index would be a "process identifier" and that would contain my
>"per-process" stat.
>
> - The const char * returned by name() in sc_process_handle could be a
>candidate to this "process identifier",
>but this is rather inefficient (many string compare to understand in
>which array index I already
>stored my stat.,
>
> - The adress of the sc_process_handle object cannot be taken as
>"process identifier" as one could
>have two different sc_process_handle representing the same process
>information,
>
> - There is also the operator== that allows to compare whether two
>process handle actually represent
>the same process's information. This would oblige to use the
>sc_process_handle object itself (and not
>a pointer to it) as the process indentified, which is not very
>convenient, especially if you want to use a STL container
>for the array (I guess that the copy constructor is private, which means
>no std::vector, etc., etc.).
>
>So we want to propose to add a method to the sc_process_handle class,
>that could be as below:
>
>uint64_t id() const;
>
>and that could return a unique integer identifier associated with the
>process. Hence, it would be
>possible to retrieve and compare very quickly in what is the current
>process.
>
>Jerome Cornet
>STMicroelectronics
>
>
>--
>This message has been scanned for viruses and
>dangerous content by MailScanner, and is
>believed to be clean.
-- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.Received on Fri Mar 12 06:34:19 2010
This archive was generated by hypermail 2.1.8 : Fri Mar 12 2010 - 06:34:20 PST