Hi Bruce, Thank you for the response. That's a great Idea! But I do not understand the last four parameters of this function. (vaddr, paddr, pg_num, pg_shift) I guess vaddr is the virtual address of the previously allocated mempool, paddr is calculated using function call rte_mem_virt2phy(vaddr), am I right? what about pg_num and pg_shift? how can I pass them correctly?
Best Regards, Mahdi. On Thu, Jul 24, 2014 at 9:48 AM, Mahdi Dashtbozorgi <mdasht at gmail.com> wrote: > Hi Bruce, > > Thank you for the response. That's a great Idea! > But I do not understand the last four parameters of this function. (vaddr, > paddr, pg_num, pg_shift) > I guess vaddr is the virtual address of the previously allocated mempool, > paddr is calculated using function call rte_mem_virt2phy(vaddr), am I > right? what about pg_num and pg_shift? how can I pass them correctly? > > Best Regards, > Mahdi. > > > On Wed, Jul 23, 2014 at 11:09 PM, Richardson, Bruce < > bruce.richardson at intel.com> wrote: > >> Rather than freeing the previously allocated memzone, could you not just >> re-initialize the mempool using something like rte_mempool_xmem_create? >> >> > -----Original Message----- >> > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Mahdi Dashtbozorgi >> > Sent: Wednesday, July 23, 2014 2:05 AM >> > To: dev at dpdk.org >> > Subject: Re: [dpdk-dev] free a memzone >> > >> > Hi guys, >> > >> > Is there any suggestion to free the previously allocated memzone? >> > I really need help in this issue. >> > Any help is appreciated. >> > >> > Best Regards, >> > Mahdi. >> > >> > >> > >> > On Tue, Jul 22, 2014 at 4:03 PM, Mahdi Dashtbozorgi <mdasht at gmail.com> >> > wrote: >> > >> > > Hi, >> > > >> > > I have two processes, which uses DPDK multi-process feature to >> communicate. >> > > Master process captures packets from NIC and put them to a ring >> buffer, >> > > which is shared between master and slave process. >> > > The slave process looks up the shared ring buffer using >> rte_ring_lookup >> > > function and reads the packets. >> > > The slave process needs a memory pool, too. Therefore, it creates a >> > > mempool using rte_mempool_create. But If the slave process crashes >> during >> > > its processing and runs again, rte_mempool_create function fails and >> tells >> > > that there is a memory zone with that name. >> > > If I use rte_mempool_lookup in this case, the memory pool is not a >> clean >> > > memory pool. Because the previous run of slave process did not >> terminate >> > > gracefully and did not return all the objects to the pool. >> > > Is there any function to free an existing memory zone, which I call >> before >> > > rte_mempool_create to ensure that previous memory pool does not exists >> > > anymore? >> > > >> > > Best Regards, >> > > Mahdi. >> > > >> > >