Sat Oct 29 14:29:55 2005  Søren Sandmann  <sandmann@redhat.com>

	* README, TODO: updates
This commit is contained in:
Søren Sandmann
2005-10-29 18:30:25 +00:00
committed by Søren Sandmann Pedersen
parent 3d43e894fd
commit d598799b23
5 changed files with 200 additions and 19 deletions

View File

@ -1,3 +1,7 @@
Sat Oct 29 14:29:55 2005 Søren Sandmann <sandmann@redhat.com>
* README, TODO: updates
Fri Oct 14 11:44:43 2005 Søren Sandmann <sandmann@redhat.com> Fri Oct 14 11:44:43 2005 Søren Sandmann <sandmann@redhat.com>
* configure.ac: Add a warning about known bugs in the kernel * configure.ac: Add a warning about known bugs in the kernel

35
README
View File

@ -17,7 +17,6 @@ would be appreciated.
Requirements: Requirements:
- A Linux kernel version 2.6.11 or newer is required. - A Linux kernel version 2.6.11 or newer is required.
@ -25,7 +24,7 @@ Requirements:
- GTK+ 2.6.0 or newer is required - GTK+ 2.6.0 or newer is required
- libglade 2.5.1 is required - libglade 2.5.1 or newer is required
Compiling: Compiling:
@ -35,28 +34,31 @@ Compiling:
system compiler, but if you have upgraded your kernel it is system compiler, but if you have upgraded your kernel it is
possible that the new kernel was compiled with a different compiler possible that the new kernel was compiled with a different compiler
In that case, "modprobe sysprof-module" will produce this If the module is compiled with a different compiler than the one
compiling the kernel, "modprobe sysprof-module" will produce this
error message: error message:
insmod: error inserting './sysprof-module.o': -1 Invalid module format insmod: error inserting './sysprof-module.o': -1 Invalid module format
Debugging symbols Debugging symbols
- The programs you want to profile should have debugging symbols, or - The programs and libraries you want to profile should have debugging
you won't get much usable information. On a Fedora Core system, symbols, or you won't get much usable information. On a Fedora Core system,
installing the relevant -debuginfo package should be sufficient. installing the relevant <package>-debuginfo package should be sufficient.
On Ubuntu and Debian, the debug packages are called <package>-dbg.
- X server
- X server.
The X server as shipped by most distributions uses its own home-rolled The X server as shipped by most distributions uses its own home-rolled
module loading system and Sysprof has no way to deal with that, so if you module loading system and Sysprof has no way to deal with that, so if you
run sysprof with your normal X serverr you won't get any information about run sysprof with your normal X server you won't get any information about
how time is spent inside the X server. how time is spent inside the X server.
To fix this you have to compile your own X server: On Ubuntu and Debian there is a package, xserver-xorg-dbg, containing a
binary called Xorg-debug that is built in such a way that sysprof can use
it. On other systems, to get an X server with usable symbols you
have to compile your own:
(1) Compile the X server to use ".so" modules: (1) Compile the X server to use ".so" modules:
@ -64,17 +66,20 @@ Debugging symbols
xc/config/cf/xorgsite.def. xc/config/cf/xorgsite.def.
If you are compiling the CVS version of the X server If you are compiling the CVS version of the X server
(the one that will eventually become 7.0), then this is (the one that will eventually become 6.9), then this is
already the default. already the default.
- "make World" - "make World"
(2) Install the X server making sure it can't see any ".a" files. If - Don't run "make install" yet. (See below).
you install on top of an existing installation, just do
(2) Make sure the new X server can't see any old ".a" files lying
around. If you install on top of an existing installation, just do
find /usr/X11R6/lib/"*.a" | sudo xargs rm find /usr/X11R6/lib/"*.a" | sudo xargs rm
and install the newly compiled X server. then run "make install" as root to install the newly compiled
X server.
If a ".so" X server finds .a files in its module path it will If a ".so" X server finds .a files in its module path it will
try to load those in preference to .so files and this causes try to load those in preference to .so files and this causes

23
TODO
View File

@ -5,9 +5,6 @@ Before 1.0.1:
This is just the (deleted) problem. This is just the (deleted) problem.
* Build system * Build system
- Find out what distributions it actually works on
(ask for sucess/failure-stories in 1.0 releases)
- Create RPM package? See fedora-packaging-list for information - Create RPM package? See fedora-packaging-list for information
about how to package kernel modules. Lots of threads in about how to package kernel modules. Lots of threads in
June 2005 and forward. June 2005 and forward.
@ -16,6 +13,18 @@ Before 1.0.1:
Before 1.2: Before 1.2:
* Crash reported by Rudi Chiarito with n_addrs == 0.
* Find out why we get hangs with rawhide kernels. This only happens with the
'trace "current"' code. See this mail:
http://mail.nl.linux.org/kernelnewbies/2005-08/msg00157.html
esp0 points to top of kernel stack
esp points to top of user stack
(Reported by Kjartan Marass).
* Figure out how to make sfile.[ch] use less memory. * Figure out how to make sfile.[ch] use less memory.
- In general clean sfile.[ch] up a little: - In general clean sfile.[ch] up a little:
- split out dfa in its own generic class - split out dfa in its own generic class
@ -443,7 +452,13 @@ Later:
DONE: DONE:
Before 1.0: * Find out what distributions it actually works on
(ask for sucess/failure-stories in 1.0 releases)
* Add note in README about Ubuntu and Debian -dbg packages and how to get
debug symbols for X there.
* Before 1.0:
- Update version numbers in source - Update version numbers in source

99
xmlstore.c Normal file
View File

@ -0,0 +1,99 @@
typedef struct ParsedItem ParsedItem;
typedef enum
{
BEGIN,
TEXT,
END
} XmlItemType;
struct XmlItem
{
XmlItemType type;
char [1] data;
};
struct XmlStore
{
XmlItem * items;
GHashTable *user_data_map;
};
struct ParsedItem
{
XmlItemType type;
union
{
struct
{
char * element;
int n_attrs;
char **attr;
} begin_item;
struct
{
char *text;
} text_item;
struct
{
char *element;
} end_item;
} u;
};
static void
parse_begin_item (XmlItem *item,
ParsedItem *parsed_item)
{
}
static void
parse_end_item (XmlItem *item,
ParsedItem *parsed_item)
{
}
static void
parse_text_item (XmlItem *item,
ParsedItem *parsed_item)
{
}
static ParsedItem *
parsed_item_new (XmlItem *item)
{
ParsedItem *parsed_item = g_new0 (ParsedItem, 0);
switch (item->type)
{
case BEGIN:
parsed_item->type = BEGIN;
parse_begin_item (item, parsed_item);
break;
case END:
parsed_item->type = END;
parse_end_item (item, parsed_item);
break;
case TEXT:
parsed_item->type = TEXT;
parse_text_item (item, parsed_item);
break;
}
return parsed_item;
}
static void
parsed_item_free (ParsedItem *item)
{
}

58
xmlstore.h Normal file
View File

@ -0,0 +1,58 @@
typedef struct XmlIter XmlIter;
typedef struct XmlStore XmlStore;
XmlStore *xml_store_new (void);
void xml_store_free (XmlStore *store);
void xml_store_append_begin (XmlStore *store,
const char *element);
void xml_store_append_end (XmlStore *store,
const char *element);
void xml_store_append_text (XmlStore *store,
const char *text);
void xml_store_write (XmlStore *store,
const char *file,
GError *file);
void xml_store_set_data (XmlIter *iter,
gpointer data);
gpointer xml_store_get_data (XmlIter *iter,
gpointer data);
void xml_store_has_data (XmlIter *iter);
/* An iter stays valid as long as the XmlStore is valid */
XmlIter * xml_store_get_iter (XmlStore *store);
XmlIter * xml_iter_get_sibling (XmlIter *iter);
XmlIter * xml_iter_get_child (XmlIter *iter);
int xml_iter_get_n_children (XmlIter *iter);
gboolean xml_iter_valid (XmlIter *iter);
void
process_tree (XmlIter *iter)
{
XmlIter *i;
if (!xml_iter_valid (iter))
return;
/* siblings */
i = xml_iter_sibling (iter);
while (xml_iter_valid (i))
{
process_tree (i);
i = xml_iter_sibling (i);
}
/* children */
process_tree (xml_iter_child (iter));
process_tree (xml_iter_sibling (iter));
process_tree (xml_iter_child (iter));
}
void
process_store (XmlStore *store)
{
process_tree (xml_store_get_iter (store));
}