Date: Sat, 20 Dec 2008 20:51:11 +0000 From: Ferner Cilloniz <fernercc@gmail.com> To: Michelle Li <michelle_li_001@yahoo.com> Cc: freebsd-hackers@freebsd.org Subject: Re: reg: adding proc to allproc Message-ID: <1229806271.4952.4.camel@mobiliare.Belkin> In-Reply-To: <1229806179.4952.3.camel@mobiliare.Belkin> References: <823694.23548.qm@web65403.mail.ac4.yahoo.com> <1229806179.4952.3.camel@mobiliare.Belkin>
next in thread | previous in thread | raw e-mail | index | archive | help
Forgot to mention. Im using the below book and /sys/kern/kern_fork.c as references for process management. On Sat, 2008-12-20 at 20:49 +0000, Ferner Cilloniz wrote: > for the sake of this discussion its suffice to consider new_entry->p as > read-only pointer because i never modify it. I am just storing its > address. It easily just be considered an unsigned long value. > > However, would really calling > LIST_INSERT_HEAD(&allproc, entry->p, p_list) > > result in a hang of the system? I'm flipping through pages in FreeBSD > design and implementation right now. > > On Sat, 2008-12-20 at 18:05 -0800, Michelle Li wrote: > > reg: adding proc to allproc (Ferner Cilloniz) > > > > new_entry->p ..... > > is accessing the "read/write" pointer declared in the proc_ll struct > > > > new_entry->p = p; > > is attempting an assignment of a "read ONLY" const pointer that > > has been passed into add_proc_entry() to a "read/write" pointer > > > > new_entry->"read/write pointer" = "read ONLY pointer"; > > is invalid > > > > "new_entry->p = p; // maybe doing this assignment isnt correct?" > > with this assertion I agree > > > > > > freebsd-hackers-request@freebsd.org wrote: Send freebsd-hackers mailing list submissions to > > freebsd-hackers@freebsd.org > > > > To subscribe or unsubscribe via the World Wide Web, visit > > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > > or, via email, send a message with subject or body 'help' to > > freebsd-hackers-request@freebsd.org > > > > You can reach the person managing the list at > > freebsd-hackers-owner@freebsd.org > > > > When replying, please edit your Subject line so it is more specific > > than "Re: Contents of freebsd-hackers digest..." > > > > > > Today's Topics: > > > > 1. adding proc to allproc (Ferner Cilloniz) > > 2. Re: adding proc to allproc (Julian Elischer) > > 3. Re: adding proc to allproc (Ferner Cilloniz) > > 4. Re: adding proc to allproc (Julian Elischer) > > 5. Re: adding proc to allproc (Ferner Cilloniz) > > > > > > ---------------------------------------------------------------------- > > > > Message: 1 > > Date: Fri, 19 Dec 2008 22:39:20 +0000 > > From: Ferner Cilloniz > > Subject: adding proc to allproc > > To: freebsd-hackers@freebsd.org > > Message-ID: <1229726360.5614.15.camel@mobiliare.Belkin> > > Content-Type: text/plain > > > > Hello everyone. > > > > I am playing with freebsd and just learning some things about the > > FreeBSD kernel. > > > > So for my first quest i am placing random processes from the allproc > > list into a list of my own and trying to add them back into allproc > > > > I have pasted the code below. > > > > ----------------------------------------------------------------------- > > struct proc *p = a process from my own list; > > if( p != NULL && (p->p_state == PRS_NEW || p->p_state == PRS_NORMAL) ){ > > LIST_INSERT_HEAD(&allproc, p, p_list); > > } > > ----------------------------------------------------------------------- > > > > Thanks. > > > > > > > > ------------------------------ > > > > Message: 2 > > Date: Fri, 19 Dec 2008 21:27:34 -0800 > > From: Julian Elischer > > Subject: Re: adding proc to allproc > > To: Ferner Cilloniz > > Cc: freebsd-hackers@freebsd.org > > Message-ID: <494C8246.3020703@elischer.org> > > Content-Type: text/plain; charset=ISO-8859-1; format=flowed > > > > Ferner Cilloniz wrote: > > > Hello everyone. > > > > > > I am playing with freebsd and just learning some things about the > > > FreeBSD kernel. > > > > > > So for my first quest i am placing random processes from the allproc > > > list into a list of my own and trying to add them back into allproc > > > > > > I have pasted the code below. > > > > > > ----------------------------------------------------------------------- > > > struct proc *p = a process from my own list; > > > if( p != NULL && (p->p_state == PRS_NEW || p->p_state == PRS_NORMAL) ){ > > > LIST_INSERT_HEAD(&allproc, p, p_list); > > > } > > > ----------------------------------------------------------------------- > > > > > > Thanks. > > > > and your question is? > > > > > > > > > > _______________________________________________ > > > freebsd-hackers@freebsd.org mailing list > > > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > > > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" > > > > > > > > ------------------------------ > > > > Message: 3 > > Date: Fri, 19 Dec 2008 23:28:46 +0000 > > From: Ferner Cilloniz > > Subject: Re: adding proc to allproc > > To: Julian Elischer > > Cc: freebsd-hackers@freebsd.org > > Message-ID: <1229729326.5614.16.camel@mobiliare.Belkin> > > Content-Type: text/plain > > > > When i run the code from a KLD it hangs the system. No reboot occurs > > however, it just hangs there. > > > > > > On Fri, 2008-12-19 at 21:27 -0800, Julian Elischer wrote: > > > Ferner Cilloniz wrote: > > > > Hello everyone. > > > > > > > > I am playing with freebsd and just learning some things about the > > > > FreeBSD kernel. > > > > > > > > So for my first quest i am placing random processes from the allproc > > > > list into a list of my own and trying to add them back into allproc > > > > > > > > I have pasted the code below. > > > > > > > > ----------------------------------------------------------------------- > > > > struct proc *p = a process from my own list; > > > > if( p != NULL && (p->p_state == PRS_NEW || p->p_state == PRS_NORMAL) ){ > > > > LIST_INSERT_HEAD(&allproc, p, p_list); > > > > } > > > > ----------------------------------------------------------------------- > > > > > > > > Thanks. > > > > > > and your question is? > > > > > > > > > > > > > > _______________________________________________ > > > > freebsd-hackers@freebsd.org mailing list > > > > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > > > > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" > > > > > -- > > Cilloniz Bicchi, Ferner > > > > Research Assistant > > Dept. of Computer Sciences > > The University of Texas at Austin > > http://www.cs.utexas.edu/~fernercc > > fernercc@cs.utexas.edu > > > > > > > > ------------------------------ > > > > Message: 4 > > Date: Fri, 19 Dec 2008 21:39:20 -0800 > > From: Julian Elischer > > Subject: Re: adding proc to allproc > > To: Ferner Cilloniz > > Cc: freebsd-hackers@freebsd.org > > Message-ID: <494C8508.2020000@elischer.org> > > Content-Type: text/plain; charset=ISO-8859-1; format=flowed > > > > Ferner Cilloniz wrote: > > > When i run the code from a KLD it hangs the system. No reboot occurs > > > however, it just hangs there. > > > > well, firstly you have no locking though that would probably let you > > get away with it most times. > > > > Where does the process come from in the first place? > > > > It sounds like you are making a circular list somewhere or somehow... > > > > have you tried going into ddb? > > > > > > > > > > > > > > > > > On Fri, 2008-12-19 at 21:27 -0800, Julian Elischer wrote: > > >> Ferner Cilloniz wrote: > > >>> Hello everyone. > > >>> > > >>> I am playing with freebsd and just learning some things about the > > >>> FreeBSD kernel. > > >>> > > >>> So for my first quest i am placing random processes from the allproc > > >>> list into a list of my own and trying to add them back into allproc > > >>> > > >>> I have pasted the code below. > > >>> > > >>> ----------------------------------------------------------------------- > > >>> struct proc *p = a process from my own list; > > >>> if( p != NULL && (p->p_state == PRS_NEW || p->p_state == PRS_NORMAL) ){ > > >>> LIST_INSERT_HEAD(&allproc, p, p_list); > > >>> } > > >>> ----------------------------------------------------------------------- > > > > >> > > >>> _______________________________________________ > > >>> freebsd-hackers@freebsd.org mailing list > > >>> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > > >>> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" > > > > > > > > ------------------------------ > > > > Message: 5 > > Date: Sat, 20 Dec 2008 02:23:20 +0000 > > From: Ferner Cilloniz > > Subject: Re: adding proc to allproc > > To: Julian Elischer > > Cc: freebsd-hackers@freebsd.org > > Message-ID: <1229739800.5614.24.camel@mobiliare.Belkin> > > Content-Type: text/plain > > > > The process comes from the allproc list. > > I am simply iterating through this list and removing the first 1/2 of > > allproc list and adding the removed process to my own singly linked > > list. > > > > LIST_REMOVE(current_proc, p_list); // remove from the allproc > > add_proc_entry(current_proc); > > > > Later, i am iterating through my singly linked list and doing the below: > > > > struct proc *p = current->p; > > f( p != NULL && (p->p_state == PRS_NEW || p->p_state == PRS_NORMAL) ){ > > LIST_INSERT_HEAD(&allproc, p, p_list); > > } > > > > Could this be causing a circular list? > > > > I am adding the proc entries to my singly linked list as follows: > > > > static void add_proc_entry(const struct proc *p) > > { > > struct proc_ll *new_entry = (struct proc_ll*)malloc(sizeof(struct > > proc_ll), M_TEMP, M_ZERO | M_NOWAIT); > > int done = 0; > > > > new_entry->p = p; // maybe doing this assignment isnt correct? > > > > if(proc_entries == NULL) { > > proc_entries = new_entry; > > return; > > } > > > > struct proc_ll *current = proc_entries; > > > > while(current != NULL) { > > if(current->next == NULL) { > > current->next = new_entry; > > break; > > } > > current = current->next; > > } > > } > > > > > > struct proc_ll { > > struct proc *p; > > struct proc_ll *next; > > }; > > > > > > A circular list does sound like it could cause hanging to occur but the > > above code, atleast from my eyes, doesn't seem to cause it. > > > > On Fri, 2008-12-19 at 21:39 -0800, Julian Elischer wrote: > > > Ferner Cilloniz wrote: > > > > When i run the code from a KLD it hangs the system. No reboot occurs > > > > however, it just hangs there. > > > > > > well, firstly you have no locking though that would probably let you > > > get away with it most times. > > > > > > Where does the process come from in the first place? > > > > > > It sounds like you are making a circular list somewhere or somehow... > > > > > > have you tried going into ddb? > > > > > > > > > > > > > > > > > > > > > > > > On Fri, 2008-12-19 at 21:27 -0800, Julian Elischer wrote: > > > >> Ferner Cilloniz wrote: > > > >>> Hello everyone. > > > >>> > > > >>> I am playing with freebsd and just learning some things about the > > > >>> FreeBSD kernel. > > > >>> > > > >>> So for my first quest i am placing random processes from the allproc > > > >>> list into a list of my own and trying to add them back into allproc > > > >>> > > > >>> I have pasted the code below. > > > >>> > > > >>> ----------------------------------------------------------------------- > > > >>> struct proc *p = a process from my own list; > > > >>> if( p != NULL && (p->p_state == PRS_NEW || p->p_state == PRS_NORMAL) ){ > > > >>> LIST_INSERT_HEAD(&allproc, p, p_list); > > > >>> } > > > >>> ----------------------------------------------------------------------- > > > > > > >> > > > >>> _______________________________________________ > > > >>> freebsd-hackers@freebsd.org mailing list > > > >>> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > > > >>> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" > > > > > > > > > > > > > ------------------------------ > > > > _______________________________________________ > > freebsd-hackers@freebsd.org mailing list > > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" > > > > End of freebsd-hackers Digest, Vol 299, Issue 5 > > *********************************************** > > > > > > > > _______________________________________________ > > freebsd-hackers@freebsd.org mailing list > > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" -- Cilloniz Bicchi, Ferner Research Assistant Dept. of Computer Sciences The University of Texas at Austin http://www.cs.utexas.edu/~fernercc fernercc@cs.utexas.edu
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1229806271.4952.4.camel>